Tiedotus

Ulkomaalaiset ovat asettuneet maan päälle ja kummallisella tavalla, heidän aakkoset ovat täsmälleen samat kuin meidän. Heidän kielensä on myös hyvin samanlainen kuin meidän kielemme, ja siinä on joitain hyvin selkeitä ja helposti laskettavia eroja.

Haaste

Ota merkkijono ja tulosta ulkomaalaisen kielen vastine. Käännös toimii sellaisenaan :

Vaihda kaikki sanan vokaalit vastaavilla:

 Vowel | With --------+-------- a | obo e | unu i | ini o | api u | iki 

Voit myös kirjoittaa toisen kääntäjän kääntämään Alienin -> englanti, tämä on kuitenkin valinnainen.

Esimerkkejä

Input: Shaun Output: Shoboikin Input: Java Output: Jobovobo Input: Hello, World! Output: Hunullapi, Wapirld! 

Jos vokaali on iso, niin isot kirjaimet isot kirjain.

Input: Alan Output: Obolobon Input: Australia Output: Oboikistroboliniobo 

Säännöt

  • Tavalliset porsaanreiät ovat voimassa
  • On toimittava tekstissä, joka sisältää uutta rivit
  • Voit joko kirjoittaa funktion, lambdan tai koko ohjelman

    Capingrobotikilobotiniapins apin kirjoitti thunu runuvunursunu trobonslobotapir!

Kommentit

  • En ’ en ole varma mitä Voit myös kirjoittaa toisen kääntäjän kääntämään Alien- > englannin oletetaan tarkoittavan. Voimmeko kirjoittaa kääntäjän normaalin sijaan?
  • Ehkä se ’ on vain minä, mutta se ’ ei ole minulle selvää, että myös kantaa tätä merkitystä täällä. Joka tapauksessa ’ en ole varma, miten tämä on sääntö , jos se ’ ei ole osa todellista tehtävä.
  • @Dennis Sinä ’ olet hieman punudobontininen, mutta olen ’ muokannut sitä tekemään siitä selkeämpi.
  • Miksi vaatimus uudelle riville? Mielestäni tämä on tarpeetonta, eikä se ’ t lisää mitään haasteen pääkohteeseen.
  • Voiko tulo sisältää mitä tahansa ASCII-merkkiä vai vain osajoukon . Esimerkiksi onko syötteessä koskaan numeroita?

Vastaa

Haskell, 100 91 tavua

(>>= \x->last$[x]:[y|(z:y)<-words"aobo eunu iini oapi uiki AObo EUnu IIni OApi UIki",z==x]) 

Kommentit

  • Hoboskunull varmasti

vastaus

TI-Basic, 173 + 59 + 148 = 380 tavua

Toivottavasti ulkomaalaiset käyttävät TI- 83/84 laskimet;)

Pääohjelma, 173 tavua

BONUS: Pidä toinen tai kolmas rivi riippuen siitä, haluatko normaalin vai kääntäjän kääntäjän.

"("+Ans+")→Str1 "@a~obo@A~Obo@e~unu@E~Unu@i~ini@I~Ini@o~api@O~Api@u~iki@U~Iki@→Str2 <-- English to Alien "@obo~a@Obo~A@unu~e@Unu~E@ini~i@Ini~I@api~o@Api~O@iki~u@Iki~U@→Str2 <-- Alien to English For(I,2,length(Ans If "@"=sub(Str2,I-1,1 Then Str1+"~"+sub(Str2,I,inString(Str2,"@",I)-I prgmQ Ans→Str1 End End 

Aliohjelma (prgmQ), 59 tavua:

Ans→Str9 inString(Ans,"~ sub(Str9,Ans,length(Str9)-Ans+1→Str8 Str9 prgmR Repeat Str9=Ans+Str8 Ans+Str8→Str9 prgmR End 

Aliohjelma (prgmR), 148 tavua:

Ans→Str0 inString(Ans,"~→Z inString(Str0,"~",Ans+1→Y inString(sub(Str0,1,Z-1),sub(Str0,Z+1,Ans-Z-1→X sub(Str0,1,-1+inString(Str0,"~ If X sub(Str0,1,X-1)+sub(Str0,Y+1,length(Str0)-Y)+sub(Str0,X+length(sub(Str0,Z+1,Y-Z-1)),Z-X-length(sub(Str0,Z+1,Y-Z-1 

PS ~ edustaa tunnusta 0x81 ja @ edustaa tunnusta 0x7F, lue lisää täältä .

PPS Osa siitä, miksi näillä ohjelmilla on suuri tavumäärä, johtuu siitä, että sub(, inString(, length( ja kaikki pienet kirjaimet ovat kaksi tavua kukin …

Kommentit

  • Luulen, että sekoitit prgmR ja prgmQ koodin otsikoissasi kerran?
  • Kyllä, kiitos, että sait @ByteCommanderin 🙂

Vastaus

Perl, 56 tavua

Sisältää +1 kohteelle -p

Anna syöte STDIN-tunnukselle

alien.pl:

#!/usr/bin/perl -p s%\w%"`"&$&|("A\x0fboE\x15nuI\x09niO\x01piU\x09ki"=~/\u$&\K.../,$&)%eg 

Toimii kuten kuvassa, mutta korvaa \xXX -pakot todellisella merkillä saadaksesi vaaditut pisteet

Kommentit

  • +1 Myönnetty vain Alien-avatarille. Vielä hauskaa, ratkaisu on myös mukava.
  • Jeesus Kristus .. Perl parhaimmillaan, hyvät naiset ja herrat.

Vastaa

sed 89

s,a,&b\n,gi s,i,&n\r,gi s,o,&p\r,gi s,u,&k\r,gi s,e,&n\f,gi y,aeouAEOU\n\r\f,ouaiOUAIoiu, 

kommentit

  • Onko tämä työskenteletkö syötteenä, joka sisältää uusia rivejä?
  • @Jordan Se tekee. sed lukee ” yhden rivin kerrallaan ”. Joten se käsittelee kaiken ensimmäiseen uuteen riviin asti, tulostaa sen, tulostaa uuden rivin ja aloittaa sitten alusta, jos tekstiä on enemmän.
  • Ah, tietysti. 👍🏻
  • @Jordan Se ei ollut ’ ta sääntö, kun kirjoitin tämän, mutta se päätyi silti toimimaan.

vastaus

Python, 99 95 93 tavua

lambda s:"".join(("ouiaiOUIAI bnnpkbnnpk ouiiiouiii"+c)["aeiouAEIOU".find(c)::11] for c in s) 

ideone.com-sivustossa …

Melko yksinkertainen. Ota vain hakemisto, josta löydämme jokaisen merkin vokaaliluettelosta, ja käytä sitä vetämään tarvitsemamme kolme merkkiä.Jos sitä ei löydy, .find() palauttaa -1, joten kiinnitä vain nykyinen merkki merkkijonon päähän. Välilyönnit ovat välttämättömiä kaikki kirjaimet "a" eivät sisällä lisättyä c. Käännetyt vokaalit ryhmitellään kirjainjärjestyksessä (jokaisen käännöksen ensimmäinen kirjain, sitten toinen, sitten kolmas).

Kommentit

  • Vau, mukava luova lähestymistapa. Olen ’ m vaikuttunut 🙂
  • Voit poistaa tilan kohdasta ["aeiouAEIOU".find(c)::11] for

vastaus

05AB1E , 28 27 20 tavua

žÀ.•₅%~≠#ùÛãú•3ôD™«‡ 

Kokeile verkossa!

Unuxplobonobotiniapin

žÀ # the string "aeiouAEIOU" .•₅%~≠#ùÛãú• # the string "obounuiniapiiki" 3ô # split in pieces of 3 D™« # concatenate with a title-case copy ‡ # transliterate 

kommentit

  • Ini lapivunu gapilfining!
  • @BasicallyAlanTuring: Kesti minua liian kauan kääntääksesi sen päähäni. Luulen, että tarvitsen kääntäjän: P
  • Mene, ei pitäisi ’ olla liian kovaa: P
  • Pelottava, mielestäni siinä sanotaan rakastan golfia.
  • Olen ’ muuttanut kysymystäni, mikä tekee sinusta vastaamattoman. Tämän täytyy toimia uusilla riveillä

Vastaus

PHP, 91 tavua

<?=strtr($argv[1],[A=>Obo,E=>Unu,I=>Ini,O=>Api,U=>Iki,a=>obo,e=>unu,i=>ini,o=>api,u=>iki]); 

vastaus

Python, 129 tavua

lambda s:"".join([str,str.capitalize][ord(l)<91]({"a":"obo","e":"unu","i":"ini","o":"api","u":"iki"}.get(l.lower(),l))for l in s) 

Katso se käynnissä ideone.com-sivustossa

Tässä on kauniimmin muotoiltu versio:

lambda s: \ "".join( [str, str.capitalize][ord(l) < 91]( {"a":"obo", "e":"unu", "i":"ini", "o":"api", "u":"iki"} .get(l.lower(), l) ) for l in s) 

Mielenkiintoisimmat osat ovat { ... }.get(l.lower(), l), joka yrittää etsiä kirjaimeen l muunnetun kirjaimen. pienet kirjaimet sanakirjassa ja joko palauttaa käännetyn version (jos löytyy) tai alkuperäisen kirjaimen,
ja [str, str.capitalize][ord(l) < 91]( ... ), jotka tarkistavat, oliko alkuperäinen kirjain iso kirjain ( ASCII-koodipiste on pienempi kuin 91) ja kutsuu sitten joko str() -funktion, jossa argumentti on kirjain (jos se ei ollut ”ta” -kirjainta, ei tee mitään) tai str.capitalize() -funktio (muuntaa argumenttimerkkijonon ensimmäisen kirjaimen isoihin kirjaimiin).

Vastaa

C (gcc) , 150141 136 134 tavua

 a;i;e(char*n){for(char*v=" AEIOUIAI",*t;i=*n++;printf(&a))t=index(v,i-i/96*32),a=t?t-v:0,a=a?v[a+3]|L" 潢畮楮楰楫"[a]<<8|i&32:i;}  

Kokeile verkossa!

Perustuu vastaukseen, jonka esitti @algmyr ja -8, kiitos vain @ ASCII-

Vähemmän golfattu versio

 a;i; e(char*n){ for(char*v=" AEIOUIAI",*t;i=*n++;printf(&a)) t=index(v,i-i/96*32), a=t?t-v:0, a=a?v[a+3]|L" 潢畮楮楰楫"[a]<<8|i&32:i; }  

Kommentit

  • 149? a;l;i;e(char*n){for(char*v=" AEIOU",*t;i=*n++;printf("%c%c%c"+4*!a,(a?" OUIAI"[a]:i)|i&32," bnnpk"[a]," ouiii"[t=index(v,i-32*l),a=t?t-v:0]))l=i>96;}
  • ehkä myös 149: a;l;i;e(char*n){for(char*v="AEIOU",*t;i=*n++;printf("%c%c%c"+4*!a,(a?" OUIAI"[a]:i)|i&32," bnnpk"[a]," ouiii"[t=index(v,i&95),a=t&&t-v<5?t-v+1:0]));}
  • 144: a;l;i;e(char*n){for(char*v=" AEIOU",*t;i=*n++;)printf("%c%c%c"+4*!a,a?" OUIAI"[a]|i&32:i," bnnpk"[a]," ouiii"[t=index(v,i-i/96*32),a=t?t-v:0]);}

vastaus

erä, 215 tavua

@echo off set/pt= set s= :l if "%t%"=="" echo(%s%&exit/b set c=%t:~0,1% for %%a in (obo.a unu.e ini.i api.o iki.u Obo.A Unu.E Ini.I Api.O Iki.U)do if .%c%==%%~xa set c=%%~na set s=%s%%c% set t=%t:~1% goto l 

Syöttää STDIN-tiedostoa. Merkkikohtainen käsittely on mukavaa, kun kirjainkoko on merkitsevä.

Kommentit

  • Erä on vain pahin työkalu kaikkeen, isn ’ onko se? (No, ainakin voitit TI-Basicin 🙂 Kiva nähdä koodegolfia erässä, muuten!

Vastaa

Pyth, 42 tavua

#sXw"aeiouAEIOU"+Jc"obounuiniapiiki"3mrd3J 

Ohjelma, joka ottaa syötteen STDIN-tunnukseen ja tulostaa tuloksen.

Kokeile online-tilassa

Kuinka se toimii

#sXw"aeiouAEIOU"+Jc"obounuiniapiiki"3mrd3J Program. # Loop until error statement: w Get w, the next line of the input "obounuiniapiiki" Yield string literal "obounuiniapiiki" c 3 Split that into groups of three characters J Assign that to J and yield J mrd3J Map title case over J + Merge the lower and title groups "aeiouAEIOU" Yield string literal "aeiouAEIOU" X Translate w from that to the three-character groups s Concatenate that Implicitly print 

vastaus

C, 167 tavua

I en todellakaan halunnut rikkoa tapaani tehdä aina päätoimintoja koodatessasi C: tä, mutta tämä on huomattavasti lyhyempi kuin versio, jossa on pää, ja näin sain toisen kirjeen kirjoittaaksesi mitä halusin!

Golfed

a;l;i;e(char*n){for(;i=*n++;l=i>90,i-=32*l,a=!(i-65)+2*!(i-69)+3*!(i-73)+4*!(i-79)+5*!(i-85),printf(a?"%c%c%c":"%c",(a?"HOUIAI"[a]:i)+l*32,"ibnnpk"[a],"!ouiii"[a]));} 

Kommentoi

a;l;i; e(char*n) { for(; i = *n++; /* Get char and advance */ l = i>90, /* Is lowercase? */ i -= 32*l, /* Make uppercase */ /* Is 1,2,3,4,5 depeding on the vowel and 0 for no vowel */ a = !(i-65) + 2*!(i-69) + 3*!(i-73) + 4*!(i-79) + 5*!(i-85), printf(a?"%c%c%c":"%c", /* Print 1 or 3 chars? */ (a?"HOUIAI"[a]:i)+l*32, /* Print appropriate char+case */ "ibnnpk"[a], /* Print appropriate char */ "!ouiii"[a])); /* Print appropriate char */ } 

C: ssä on jotain erityistä ja kuinka kauheaa voit ole viitteiden ja vastaavien kanssa.

Kommentit

  • 151 tavua
  • @kattokissa I ’ d sano, että vastauksesi lähetetään yksin. Se ’ erosi tarpeeksi ansaitsemaan oman vastauksensa. 🙂

vastaus

verkkokalvo , 60 tavua

Tavujen määrä edellyttää ISO 8859-1 -koodausta.

[A-Z] »$& T`L`l i ini u iki e unu a ·b· o api · o T`»l`_L`». 

Kokeile verkossa!

Vastaa

Javascript (ES6), 94 93 92 tavua

s=>s.replace(/[aeiou]/gi,c=>"OUIAIouiai"[n="AEIOUaeiou".search(c)]+"bnnpk"[n%=5]+"ouiii"[n]) 

Tallennettu 1 tavu edc65: n ansiosta
Tallennettu 1 tavu Neilin ansiosta

Esittely

 let f = s=>s.replace(/[aeiou]/gi,c=>"OUIAIouiai"[n="AEIOUaeiou".search(c)]+"bnnpk"[n%=5]+"ouiii"[n]) function translate() { document.getElementById("o").value = f(document.getElementById("i").value); } translate(); 
 <input size=80 oninput="translate()" value="Hello, World!"><br><input size=80 disabled> 

kommentit

  • Voit tarkistaa .indexOf – ja .search -palautusarvon käyttämällä ~ -näppäintä <0
  • Etsin, mitä tapahtuisi, jos korvaat vain vokaalit, ja sain alun perin s=>s.replace(/[aeiou]/gi,c=>"ouiaiOUIAI"[n="aeiouAEIOU".indexOf(c)]+"bnnpk"[n%=5]+"ouiii"[n]), joka on edelleen 93 tavua. . Mutta koska c tiedetään nyt olevan vokaali, voit nyt käyttää search indexOf tavun tallentamiseksi!
  • @Neil – Hienoa! Yritin itse asiassa molempia, mutta en ’ ajattele niiden yhdistämistä.

Vastaa

Java 8, 172 tavua

String f(String s){String v="AEIOUaeiou",r="OboUnuIniApiIkiobounuiniapiiki",o="";for(char c:s.toCharArray()){int n=v.indexOf(c);o+=n>-1?r.substring(n*3,n*3+3):c;}return o;} 

golfaamaton:

String f(String s){ String v="AEIOUaeiou",r="OboUnuIniApiIkiobounuiniapiiki",o=""; for(char c:s.toCharArray()){ int n=v.indexOf(c); o+=n>-1?r.substring(n*3,n*3+3):c; } return o; } 

Ja ulkomaalainen takaisin englantiin (171 tavua):

String g(String s){String[] v="AEIOUaeiou".split(""),r="Obo Unu Ini Api Iki obo unu ini api iki".split(" ");for(int i=0;i<v.length;i++)s=s.replaceAll(r[i],v[i]);return s;} 

Unkari:

String g(String s){ String[] v="AEIOUaeiou".split(""),r="Obo Unu Ini Api Iki obo unu ini api iki".split(" "); for(int i=0;i<v.length;i++)s=s.replaceAll(r[i],v[i]); return s; } 

vastaus

Tcl, 75 tavua

Käännettävä merkkijono on muuttujassa s.

string map {A Obo a obo E Unu e unu I Ini i ini O Api o api U Iki u iki} $s 

Vastaa

Mathematica, 128 tavua

#~StringReplace~{"a"->"obo","A"->"Obo","e"->"unu","E"->"Unu","i"->"ini","I"->"Ini","o"->"api","O"->"Api","u"->"iki","U"->"Iki"}& 

Etkö ole varma, voidaanko lyhyempi ohjelma saada käyttämällä IgnoreCase->True -tapahtumaa yhdessä tapaustarkistuksen kanssa. / div>

vastaus

C 178 tavua

char*p[256],*a="obo\0unu\0ini\0api\0iki\0Obo\0Unu\0Ini\0Api\0Iki",*b="aeiouAEIOU";main(c){for(c=0;b[c];++c)p[b[c]]=a+4*c;for(;(c=getchar())>0;)p[c]?printf("%s",p[c]):putchar(c);} 

Kommentit

  • 153 tavua
  • @ceilingcat & c voi olla ok, jos se tallentaa numeron tavu1 tavu2 tavu3 … esimerkiksi 255 muistissa muodossa ff 00 00 00, mutta jos 255: lle on toinen endiani meillä on 00 00 00 ff ja tulostamme void-merkkijonon …

Vastaa

C, 163 162 159 tavua

 char*t="aeiou";n,k;q(char*x){for(;*x;n<0||(*x=t[n>1?n%2?0:2:n+3])&&k>90||(*x-=32),printf("%c%.2s",*x++,n<0?"":&"bonunipiki"[2*n]))n=strchr(t,tolower(k=*x))-t;}  

Kommentit

  • char*t="aeiou"; -silmukan asettaminen silmukalle säästää yhden tavun
  • 144 tavua

vastaus

C #, 133 121 tavua

 s=>{int i;return string.Concat(s.Select(c=>(i ="AIUEOaiueo".IndexOf(c))>-1?"OboIniIkiUnuApioboiniikiunuapi".Substring(i*3,3):c+""));}  

Muokkaa (kiitos milk)

kiitos 🙂 Tiedän itse asiassa tämän ylikuormituksen, mutta unohdin sen jotenkin kokonaan kirjoittaessani tätä.

 s=>string.Concat(s.Select((c,i)=>(i="AIUEOaiueo".IndexOf(c))>-1?"OboIniIkiUnuApioboiniikiunuapi".Substring(i*3,3):c+""));  

kommentit

  • Voit käyttää Select(char, int) ylikuormitusta, joten sinun ’ ei tarvitse ilmoittaa i ja voi laittaa kaiken yhdelle riville. s=>string.Concat(s.Select((c,i)=>(i="AIUEOaiueo".IndexOf(c))>-1?"OboIniIkiUnuApioboiniikiunuapi".Substring(i*3,3):c+""));

vastaus

C, 207 202 tavua (kiitos Cyoce)

#include <stdio.h> #define r(c,t) case c:printf(t);continue; int main(){int c;while(~(c=getchar())){switch(c){r("a","obo")r("e","unu")r("i","ini")r("o","api")r("u","iki")default:putchar(c);}}return 0;} 

1) Vihaan jättää kirjoittamatta tyypit ennen minkäänlaisia ilmoituksia

2) En todellakaan halua laittaa käyttökelvottomia koodeja (ilman main () -funktiota)

Käyttö:

c89 cg.c -o cg; echo "Testing" | ./cg 

kommentit

  • Tervetuloa PPCG: hen!
  • @MartinEnder, että ’ on odottamatonta … mutta kiitos 🙂
  • (c=getchar())!= EOF voi tulla ~(c=getchar())
  • 143 tavua

vastaus

Swift 2,2 196 tavua

¯ \ _ (ツ) _ / ¯

Golfi

var r = ["a":"obo","e":"unu","i":"ini","o":"api","u":"iki"];var q={(s:String) in var o = "";for var i in s.lowercaseString.characters{o += r[String(i)] != nil ? r[String(i)]!:String(i)};print(o);} 

UnGolfed

var r = ["a":"obo","e":"unu","i":"ini","o":"api","u":"iki"] var q={(s:String) in var o = "" for var i in s.lowercaseString.characters { o += r[String(i)] != nil ? r[String(i)]!:String(i) } print(o) } 

Kommentit

  • Ovatko välilyönnit var r = [ välttämätön?
  • Joo leikkikenttien sovelluksessa, jos et ’ aseta tilaa tehtävän väliin, se antaa sinulle virheen ja kehottaa sinua lisäämään välilyöntejä . Swift on luultavasti yksi golfin huonoimmista kielistä, mutta ajattelin, että olisi hauskaa kokeilla.
  • Ja se oli mielenkiintoista, se ei antanut minulle ’ virhe, kun määritin muuttujaa sulkemiseen. Tästä syystä olkapäitä kohottava mies
  • joo huomasin myös sen. Siksi olin hämmentynyt ’.

vastaus

Perl 6 , 84 82 tavua

 {my%o=<a obo e unu i ini o api u iki>;S:i:g[<{%o.keys}>]=%o{$/.lc}.samecase($/~"a")}  
 {my%o=<a obo e unu i ini o api u iki>;S:i:g[<[aeiou]>]=%o{$/.lc}.samecase($/~"a")}  

Laajennettu:

 # bare block lambda with implicit parameter 「$_」 { # create the mapping my %v = <a obo e unu i ini o api u iki>; # replace vowels in 「$_」 S :ignorecase :global [ <[aeiou]> ] = # replace them with: %v{ $/.lc } # change it to be the same case as what was matched, and a lowercase letter .samecase( $/ ~ "a" ) }  

Käyttö:

 my &english-to-alien = {my%o=<a obo e unu i ini o api u iki>;S:i:g[<[aeiou]>]=%o{$/.lc}.samecase($/~"a")} say english-to-alien "Australia"; # Oboikistroboliniobo  

vastaus

C – 192 tavua

(selkeyttä varten lisätään uusia rivejä)

 int c,j,b;main(){ char*f[]={"bo","nu","ni","pi","ki",""}, s[]={14,16,0,-14,-12}; while(c=getchar()){for(b=j=0;j<10;++j) {if(c=="aeiouAEIOU"[j]){c+=s[j%=5];b=1;break;}} printf("%c%s",c,f[b?j:5]);}}  

Vain hakutaulukot ja looginen kytkin.

Etsi jokainen kirjain vokaalien taulukosta (merkkijonosta); jos se löytyy, muokkaa sitä taulukon s säännön mukaan. Tulosta kukin merkki ja sen jälkeen merkkijono: jos vokaali löydettiin, tulosta merkki, jota on muokattu arvolla s, jota seuraa taulukossa ; jos vokaalia ei löytynyt, tulosta alkuperäinen merkki ja tyhjä merkkijono.

Kommentit

vastaus

rubiini, 102 93 91 88 78 tavua

gsub(/[#{b="aeiouAEIOU"}]/){"obounuiniapiikiOboUnuIniApiIki"[b.index($&)*3,3]} 

Selitys:

Suorita rivi kuten ruby -pe "gsub(/[#{b="aeiouAEIOU"}]/){"obounuiniapiikiOboUnuIniApiIki"[b.index($&)*3,3]}", seuraava tyyppi, esimerkiksi Australia, jonka sen pitäisi antaa: Oboikistroboliniobo.

Se on melko suoraviivaista, korvaa kaikki vokaalit alaosalla, joka perustuu korvattavan vokaalin hakemistoon kohdassa (b), kertaa 3 ja käännösmerkkijonon 3 seuraavaa merkkiä.

Kommentit

  • Epäilen etu- ja loppupään lainausmerkit (ja sisäiset pakot, jos syötteessä on lainausmerkkejä ) saattaa hylätä tämän. Joka tapauksessa voit tallentaa kaksi tavua siirtämällä osoitetta b osaksi Regexp (/[#{b=...}/).
  • Minusta välilyönti p $* on tarpeeton
  • Tallenna lisää tavuja -p -lipulla. ruby -pe 'gsub(/[#{b="aeiouAEIOU"}]/){"obounuiniapiikiOboUnuIniApiIki"[b.index($&)*3,3]}'
  • Lasken 78 + 2 (-pe). Kuinka saat 71?
  • @NotthatCharles onko suorituksessa tarvittavilla hahmoilla merkitystä tässä tapauksessa? En vain ’ laskenut niitä.

Vastaa

TI-BASIC, 201 197 195 tavua

Ans+" →Str1:"AEIOUaeiou→Str2:"OUIAIouiai→Str3:"bonunipiki→Str4:1→X:While X<length(Str1:inString(Str2,sub(Str1,X,1→A:5fPart(.2A→B:If A:sub(Str1,1,X-1)+sub(Str3,A,1)+sub(Str4,2B-1,2)+sub(Str1,X+1,length(Str1)-X→Str1:X+1+2(A>0→X:End:sub(Str1,1,length(Str1)-1 

Luulen, että löydän toisen TI -PERUSTA vastaus tähän!

Tulos on joka tapauksessa englanninkielinen merkkijono Ans.
Tulos on käännetty merkkijono.

Esimerkkejä:

"HE HE prgmCDGF1A HUnu "Hello Hello prgmCDGF1A Hunullapi 

Selitys:
(Uudet rivit lisättiin luettavuuden vuoksi. Useita rivejä samalta riviltä merkitään : seuraavassa koodilohkossa.)

Ans+" →Str1 ;append a space to the input string and store the result ; in "Str1" "AEIOUaeiou→Str2 ;store the upper- and lowercase vowels in "Str2" "OUIAIouiai→Str3 ;store the beginning letter of each corresponding translated ; vowel in "Str3" "bonunipiki→Str4 ;store the remaining letters of each translated vowel ; in "Str4" 1→X ;store 1 in "X" While X<length(Str1 ;loop until all English letters have been checked inString(Str2,sub(Str1,X,1→A ;get the current letter and store its index in "Str2" ; into "A" 5fPart(.2A→B ;get which translated vowel end should be used ; B ranges from 1 to 5 If A ;if the current letter is a vowel sub(Str1,1,X-1) ;extract the substring of the input before the ; current letter : +sub(Str3,A,1) ;append the translated vowel start : +sub(Str4,2B-1,2) ;append the translated vowel end : +sub(Str1,X+1,length(Str1)-X ;append the remaining substring of the input : →Str1 ;store the result of these concatenations into "Str1" X+1+2(A>0→X ;check if A>0 (if the current letter was a vowel) ; if true, increment "X" by three ; if false, increment "X" by one End sub(Str1,1,length(Str1)-1 ;remove the trailing space and store the result in "Ans" ;implicit print of "Ans" 

Huomautuksia:

  • TI-BASIC on koodattu kieli. Merkkien lukumäärä ei ei yhtä tavuinen määrä.

  • TI-BASICin pienet kirjaimet ovat kaksi tavua kukin.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *