Käännä englanti korpukseksi
On helmikuu 2, 2021 by adminCorpus on kuvitteellinen ryhmittymä suositusta videopelistä Warframe , joilla on jonkin verran mielenkiintoinen kieli.
Vaikka pelin muilla ryhmillä, kuten Grineerillä, on jonkinlainen logiikka kielensä takana, Corpus on yksinkertaisesti häviöllinen englannin kielen korvaaminen.
Kaikki Corpus-sanat ovat samat kuin heidän englanninkieliset vastaavansa, paitsi seuraavilla aakkosjärjestyksillä:
Tämä aiheuttaa joitain ongelmia ääntämisessä:
yes
tulee yey
say
tulee yay
yay
tulee yay
sassy
tulee yayyy
case
tulee
Tässä on kartoitusten tekstiversio:
a -> a b -> t c -> y d -> p e -> e f -> t g -> j h -> k i -> i j -> t k -> k l -> p m -> s n -> t o -> o p -> k q -> r r -> t s -> y t -> p u -> u v -> t w -> j x -> k y -> y z -> b
Haaste
Annettu teksti englanninkielisellä aakkosella, tulosta sen Corpus-käännös.
Esimerkiksi tekstistä Hello, World!
tulee Keppo, Jotpp!
Corpusissa
Säännöt
- Syöttö koostuu vain ASCII-tulostettavista merkeistä
- Syöteteksti voi sisältää välilyöntejä ja välimerkkejä, nämä on oltava säilynyt
- Kirjainten isot kirjaimet on säilytettävä
- Tämä on code-golf niin luonnollisesti, että vähiten tavuja voittaa!
Testitapaukset
Testitapaukset erotetaan <===========>
-merkillä, tyhjän rivin syötteen ja odotetun lähdön välillä
Hello, World! Keppo, Jotpp! <===========> Yes Yey <===========> TestcaSe PeypyaYe <===========> Programming Puzzles and Code Golf Ktojtassitj Kubbpey atp Yope Jopt <===========> This text has a newline in it Pkiy pekp kay a tejpite it ip <===========> Corpus language best language Yotkuy patjuaje teyp patjuaje <===========> Strip the flesh! Salt the wounds! Yptik pke tpeyk! Yapp pke joutpy! <===========> "Install Warframe" they said, "It"ll be fun" they said "Itypapp Jatttase" pkey yaip, "Ip"pp te tut" pkey yaip <===========> What the **** did you just ****ing say about me, you little *****? I"ll have you know I graduated top of my class in the Navy Seals, and I"ve been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. Jkap pke **** pip you tuyp ****itj yay atoup se, you pipppe *****? I"pp kate you ktoj I jtapuapep pok ot sy ypayy it pke Taty Yeapy, atp I"te teet ittoptep it tusetouy yeytep taipy ot Ap-Ruaepa, atp I kate otet 300 yottitsep kippy.
Bonus
Jos sisällytät myös äänitallenteen (tai videon, jossa on ääni), kun lausut testikappaleen kaikki Corpus-käännökset, voi kertoa tavuarvosi 1
palkkiona.
Kommentit
Vastaa
vastaus
05AB1E , 24 tavua
ži.•ÜÁ©;«ìñä°ÔG·ÖYΘ•Du«‡
Selitys:
‡ transliterate ži a-zA-Z with .•ÜÁ©;«ìñä°ÔG·ÖYΘ• atypetjkitkpstokrtyputjkyb Du« concatenated with itself, uppercased
Kommentit
- Pieni 24 tavun vaihtoehto translitteroimalla vain konsonantit.
vastaus
puuhiili , 42 tavua
≔”$⌊∧T-¶I^F⁷ü@n⁹γ›7η”η⭆θ⎇№β↧ι§⎇№βι↧ηη⌕β↧ιι
Kokeile verkossa! Linkki on monipuoliseen versioon c oodi. Selitys:
≔ Assign ”$⌊∧T-¶I^F⁷ü@n⁹γ›7η” Compressed string `ATYPETJKITKPSTOKRTYPUTJKYB` η To variable θ Input string ⭆ Map over characters and join ⎇ If β Lowercase alphabet № Contains ι Current character ↧ Lowercased (Then) ⎇ If β Lowercase alphabet № Contains ι Current character (Then) η Variable ↧ Lowercased (Else) η Variable § Indexed by ⌕ Index of ι Current character ↧ Lowercased β In lowercase alphabet (Else) ι Current character Implicitly print
vastaus
T-SQL, 107 tavua
SELECT TRANSLATE(v,"bcdfghjlmnpqrstvwxzBCDFGHJLMNPQRSTVWXZ", "typtjktpstkrtyptjkbTYPTJKTPSTKRTYPTJKB")FROM t
Rivinvaihto ja sisennys on tarkoitettu vain luettavuuteen.
Käyttää SQL 2017 -funktio TRANSLATE
merkkien korvaamista varten.
Valitettavasti täytyi laittaa (melkein) koko aakkoset siellä kahdesti kotelon ylläpitämiseksi. On luultavasti parempia tapoja, ehkä jotain, joka käsittelee t ”-ryhmiä ryhmänä, mutta tämä toimi minulle.
Syöttö tapahtuu olemassa olevan taulukon kautta t , jossa on varchar-sarake v , IO-sääntöjemme mukaan .
Tässä tapauksessa taulukko on luotava käyttämällä kirjainkokoista lajittelua joko suorittamalla isot ja pienet kirjaimet palvelimella tai käyttämällä COLLATE
avainsanaa (ei lasketa merkkien kokonaismäärään) ):
CREATE TABLE t(v varchar(999) COLLATE Latin1_General_CS_AS)
Vastaa
JavaScript (Node.js) , 100 tavua
s=>s.replace(/[a-z]/gi,c=>(C="_atypetjkitkpstokrtyputjkyb"[Buffer(c)[0]&31],c>{}?C:C.toUpperCase()))
s => // s = input string s.replace( // replace in s ... /[a-z]/gi, // ... all letters, no matter the case c => ( // for each letter c: C = // pick a replacement letter C "_atypetjkitkpstokrtyputjkyb" // from a 1-indexed lookup string [Buffer(c)[0] & 31], // using the 5 lowest bits of the ASCII code of c c > {} ? // if the original letter was in lower case: C // use the replacement letter as-is : // else: C.toUpperCase() // convert it to upper case ) // ) // end of replace()
Vastaa
R , 79 tavua
function(x)chartr("b-zB-Z",paste0(y<-"typetjkitkpstokrtyputjkyb",toupper(y)),x)
Vain 3 tavua lyhyempi kuin kirjaimellisesti kirjoittaminen sekä pienet että isot kirjaimet korvaavat merkkijonot yhdessä …
R , 79 tavua
function(x,`[`=chartr)"B-Z"[toupper(y),"b-z"[y<-"typetjkitkpstokrtyputjkyb",x]]
Fancier-koodi, sama tavumäärä.
Vastaa
Vastaa
vastaus
J , 78 61 tavua
-17 tavua FrownyFrogin ansiosta!
rplc(u:,98 66+/i.25);"0(,toupper)@"typetjkitkpstokrtyputjkyb"
Kommentit
- 61
- @FrownyFrog Kiitos! J804-laitteessani en voi ’ käyttää vakioita oikealla puolella. Minun täytyy päivittää 🙂 Ratkaisuni on kuitenkin ruma ….
Vastaa
C # (Visual C # Interactive Compiler) , 151 83 tavua
n=>n.Select(a=>char.IsLetter(a)?(char)(" ATYPETJKITKPSTOKRTYPUTJKYB"[a%32]|a&32):a)
Tallennettu valtava 68 tavua kiitos Pietu1998!
Kommentit
- Voit saada tämän 83 tavuun mennessä poistamalla alue, yhdistämällä
Select
s ja käyttämällä bittinopeita operaattoreita kotelossa. - Kiitos! Hieno temppu vähän viisaiden operaattoreiden kanssa!
Vastaa
K (ngn / k) , 87 63 61 60 59 tavua
f:{`c$x-a-@[!128;98+!25;:;0+"typetjkitkpstokrtyputjkyb"]a:_x}
{
}
-funktio argumentilla x
_
pieniin kirjaimiin
a:
määritä henkilölle a
!128
luettelo 0 1 2 ... 127
@[!128;
indeksit ;:;
arvot ]
muuttaa sitä korvaamalla indeksien elementit annetuilla arvoilla
98+!25
luettelo 98 99 100 ... 122
, jotka ovat "bcd
… z"
vastakkainasettelu indeksoidaan, joten käytämme a
(implisiittisesti muunnettu kokonaislukuiksi) indekseinä muutetussa luettelossa
x-a-
vähennä a
ja vähennä sitten muoto x
; tämä palauttaa isot ja pienet kirjaimet alkuperäisen merkkijonon tapaan.
`c$
muunna merkeiksi
Vastaa
Verkkokalvo 0.8.2 , 59 tavua
[a-z] $& T`l`L T`L`ATYP\ETJKITKPST\OKRTYPUTJKYB T`L `l_` .
Kokeile verkossa! Link sisältää testitapauksia. Selitys:
[a-z] $&
Etuliite jokaiselle kirjaimelle ei-ASCII-merkki. (Yritin käyttää tilaa, joka ei ole rikkomaton, mutta Firefox on saattanut muuttaa sen takaisin tavalliseksi tilaksi kopioinnin ja liittämisen jälkeen.)
T`l`L
Kirjoita kaikki isot kirjaimet kirjaimet.
T`L`ATYP\ETJKITKPST\OKRTYPUTJKYB
Muunna kirjaimet Corpukseksi.
T`L `l_` .
Pienennä kirjaimia jälkeen ei-ASCII-merkki ja poista muu kuin ASCII-merkki.
Naiivi ratkaisu on 63 tavua:
T`lL`aty\petjkitk\pst\okrty\putjkybATYP\ETJKITKPST\OKRTYPUTJKYB
Kokeile verkossa! Linkki sisältää testitapauksia.
Vastaa
Python 2 , 115 tavua
lambda i:i.translate("".join(a)) a=map(chr,range(256)) b="typetjkitkpstokrtyputjkyb" a[66:91]=b.upper();a[98:123]=b
Mukautettu @ElPedro ”vastauksesta. Tämä luo korvauksen jokaiselle taulukon ascii-merkille a
ja käyttää sitten str.translate
.
Voidaan tuoda 113 tavuun , jos merkkijonon palauttaminen on hyväksyttävää:
lambda i:[a[ord(x)]for x in i] a=map(chr,range(256)) b="typetjkitkpstokrtyputjkyb" a[66:91]=b.upper();a[98:123]=b
Kommentit
- Ajatteli jonkin verran tänä yönä selvittääkseen, miten se onnistui. ’ on ollut pitkä päivä! Hyvä ratkaisu.
Vastaa
Hyytelö , 29 tavua
“qḍỊYl4ḃ©ƭṄxḳ½Dy’ṃⱮØA,Øa¤⁺żẎy
Kommentit
- Tarvitaan vain konsonanttien kartoittaminen, joten
“ØṖ¦Mṗẏʋ@¥;}/’ṃⱮØCŒH¤⁺żẎy
tallentaa 4. (Voiko ’ päästä eroon ’ y ’ kanssaØY
koska se ’ on kartan oikealla puolella)
Vastaa
Japt , 37 tavua
;®i`
ypetjkkp¡okrtyp©jkyb`pu)gCpu bZ
Yllä oleva linkki sisältää useimmat testitapaukset, mutta en ole voinut syöttää toista viimeistä yksi merkkijonona, koska se sisältää sekä yksi- että kaksoislainausmerkkejä. Tässä on testitapaus, syötetään sen sijaan merkkijonona.
Selitys:
; #Set C to the lowercase alphabet ® #For each character Z of the input: bZ # Find its index in: C # The lowercase alphabet pu # Plus the uppercase alphabet # (-1 if it is not a letter) g # And get the character at that index in: `
ypetjkkp¡okrtyp©jkyb` # Get the lowercase Corpus alphabet pu) # Plus the uppercase Corpus alphabet i # Add Z at the end (index -1)
Vastaa
Python 2 , 138 132 tavua
def f(i,a="bcdfghjlmnpqrstvwxz",b="typtjktpstkrtyptjkb"):a+=a.upper();b+=b.upper();return"".join((x,b[a.find(x)])[x in a]for x in i)
Oikeastaan nimettyä toimintoa lyhyempi kuin lambdalla!
lambda-versio, 138 tavua
lambda i,a="bcdfghjlmnpqrstvwxzBCDFGHJLMNPQRSTVWXZ",b="typtjktpstkrtyptjkbTYPTJKTPSTKRTYPTJKB":"".join((x,b[a.find(x)])[x in a]for x in i)
131 125 jos sallitaan palauttaa joukko merkkejä ja meillä on join
funktion ulkopuolella.
def f(i,a="bcdfghjlmnpqrstvwxz",b="typtjktpstkrtyptjkb"):a+=a.upper();b+=b.upper();return[(x,b[a.find(x)])[x in a]for x in i]
Kommentit
- Voit silti käyttää lambdaa, jos teet ja
b
globaalit muuttujat - @BlackOwlKai – Kiitos. Olen pelannut tätä ajatusta, mutta se ’ on myöhässä. Ehkä huomenna 🙂
- Selvä 120/113 merkkiin (TIO ilman testikoteloita, muuten linkki olisi liian pitkä kommentti)
- Voittaa minun ja riittävän erilainen, jotta voit lähettää viestin omana vastauksena. Olen ’ äänestän 🙂
- Voit varastaa myös testitapaukseni. Niiden kirjoittaminen kesti kauemmin kuin koodi …
Vastaa
PHP , 100 tavua
Koodi
<?=strtr($argv[0],($u=bcdfghjklmnpqrstvwxyz).($f=strtoupper)($u),($v=typtjktkpstkrtyptjkyb).$f($v));
Selitys
# using the provided character mapping given on the question, as an array strtr($argv[0], # strtr for the string replacement ($u=bcdfghjklmnpqrstvwxyz).($f=strtoupper)($u), # Taking onthe the keys for the first string ($v=typtjktkpstkrtyptjkyb).$f($v)); # Using the values for second string # In both Strings appending the upper version of each string.
vastaus
pyth, 35 tavua
XQ.*m+r1dd[tG."byàHuH¯¹e?rJyfh
Voisi todennäköisesti käyttää vasenta karttaa tai jotain eroon kaksi d, mutta en voinut selvittää miten.
Vastaa
Java, 211 tavua
a->{String b="BCDFGHJLMNPQRSTVWXZbcdfghjlmnpqrstvwxz",c="TYPTJKTPSTKRTYPTJKBtyptjktpstkrtyptjkb";a.chars().map(x->{int z;return(z=b.indexOf(x))>-1?c.toCharArray()[z]:x;}).forEach(x->System.out.print((char)x));};
Kommentit
Vastaus
Pyth, 34 merkkiä
J."byàHuH¯¹e?rJyfh"XXztGJrtG1rJ1
Merkkijono on pakattu versio ” typetjkitkpstokrtyputjkyb ” sta. Jostain syystä en voi saada Pythia pakkaamaan ”atypetjkitkpstokrtyputjkyb” funktiolla
+++\.N++hSzeSzCi-RChSzCMz-hCeSzChSzN
, vaikka se todennäköisesti säästää tavun tai kaksi tavaroina voitaisiin poistaa.
Vastaus
Tcl , 114 tavua
proc C s {string map [split {btcydpftgjhkjtlpmsntpkqrrtsytpvtwjxkzbBTCYDPFTGJHKJTLPMSNTPKQRRTSYTPVTWJXKZB} ""] $s}
Vastaa
Lua , 153 tavua
t="atypetjkitkpstokrtyputjkyb"for c in(...):gmatch"."do i=c:lower():byte()-96n=t:sub(i,i)io.write((i<0or i>26)and c or(c==c:upper()and n:upper()or n))end
x * 1 == x
). Se ’ sahaa kielellä poskessa monien käännösten lausumattomuuteen.