From this Language Log post about the mysterious language on two postcards from the 1910's --
Created
November 23, 2012 18:45
-
-
Save mrflip/4136802 to your computer and use it in GitHub Desktop.
Mysterious Postcard translator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
tinlain ti iVoto su m~ zipumu | despues de echada mi bg recibi | |
oriz ja jy kuidte wi nanlidtinjin | ayer tu t_ viendo que suspendestes | |
ic nomote co nocuto ti | el sabado la salida de | |
joho~edo ler ce wi pzie oad ji vi~ozo | tarragona poy lo que creo aun te llegara | |
injo y lizuetupen wi xer jid~e | esta _ periodicos que hoy tengo | |
lzelezpued ti sodtozji. su | proporcion de mandarte. mi | |
cote injo ponu muid lain oriz | lado esta casi bien pues ayer | |
ni zimidje ic ~zoduje lez nu nece | se rebento el granito por si solo | |
u xer olidon si secinjo. YoZoic | i hoy apenas me molesta. Rafael | |
xer ni kaicki xo wifoz wi de ni | hoy se vuelve ha quejar que no se | |
idpaidjzo muid lize ni islige id | encuentra bien pero se empezo en | |
nocuz kizisen pese kaicki (paodte | salir veremos como vuelve (cuando | |
opomozisen ti socin id injo | acabaremos de males en esta | |
pono). Enjico den wuizi sodtoz con | casa). Estela nos quiere mandar las | |
duGon lozo wi owI jesid con moGen | niñas para que aqui tomen las baños | |
de den Zocjo ejzo peno. id Zud ro | no nos falta otra cosa. en fin ya | |
kizisen. ji oGezo saVunuse y inlizo | veremos. te añora muchisimo _ espera | |
lzedje pozjo jaro. omzo/odteji. | pronto carta tuya. abrazandote. | |
} | |
WORKING_2 = %Q{ | |
| | |
zipumuto jan sedunuson lenjocin | recibida tus monisimas postales | |
josmuid U ocmaD lzipuene. R O U | tambien y album precioso. r o y | |
zipaizten lozo jeten ~zopuon | recuerdos para todos gracias | |
id desmzi te jeten wi roji con | en nombre do todos que yate las | |
tozon oGen lez su lozji ad olzijed | daras años por mi parte un apreton | |
Zaizjunuse ped su mzo/en oc | fuertisimo con mi brazos al | |
zititez ti ja paibe. paote injin | rededor de tu cuello. cuado estes | |
id osmizin ji inpzumuzi lezwi | en amberes te escribire porque | |
obu in son ni~aze. ta ji | alli es mas seguro. du te | |
Ockutin tic tuo c wi xopi Roge | olvides del dia l que hace razo | |
ti soso nu laitin uz xo suno si nanjozuo | de mama si puedes ir ha misa me sustaria | |
nu de zi/oci oc | si no rezale al | |
siden oc~e. ic R R in nodjo zuce | menos algo. el r r es santa rilo | |
sido sodfo ado | mena manja una | |
lenjoc. jaro nuislzi, l | postal. tuya siempre, p |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# -*- coding: utf-8 -*- | |
# | |
# The cipher text is on the left; spanish plain text on the right. The | |
# plaintext is for ease of viewing -- we chop off everything after the '|' | |
# before using it. | |
# | |
WORKING_1 = %Q{ | |
tinlain ti iVoto su m~ zipumu | despues de echada mi bg recibi | |
oriz ja jy kuidte wi nanlidtinjin | ayer tu t_ viendo que suspendestes | |
ic nomote co nocuto ti | el sabado la salida de | |
joho~edo ler ce wi pzie oad ji vi~ozo | tarragona poy lo que creo aun te llegara | |
injo y lizuetupen wi xer jid~e | esta _ periodicos que hoy tengo | |
lzelezpued ti sodtozji. su | proporcion de mandarte. mi | |
cote injo ponu muid lain oriz | lado esta casi bien pues ayer | |
ni zimidje ic ~zoduje lez nu nece | se rebento el granito por si solo | |
u xer olidon si secinjo. YoZoic | i hoy apenas me molesta. Rafael | |
xer ni kaicki xo wifoz wi de ni | hoy se vuelve ha quejar que no se | |
idpaidjzo muid lize ni islige id | encuentra bien pero se empezo en | |
nocuz kizisen pese kaicki (paodte | salir veremos como vuelve (cuando | |
opomozisen ti socin id injo | acabaremos de males en esta | |
pono). Enjico den wuizi sodtoz con | casa). Estela nos quiere mandar las | |
duGon lozo wi owI jesid con moGen | niñas para que aqui tomen las baños | |
de den Zocjo ejzo peno. id Zud ro | no nos falta otra cosa. en fin ya | |
kizisen. ji oGezo saVunuse y inlizo | veremos. te añora muchisimo _ espera | |
lzedje pozjo jaro. omzo/odteji. | pronto carta tuya. abrazandote. | |
} | |
WORKING_2 = %Q{ | |
| | |
zipumuto jan sedunuson lenjocin | recibida tus monisimas postales | |
josmuid U ocmaD lzipuene. R O U | tambien y album precioso. r o y | |
zipaizten lozo jeten ~zopuon | recuerdos para todos gracias | |
id desmzi te jeten wi roji con | en nombre do todos que yate las | |
tozon oGen lez su lozji ad olzijed | daras años por mi parte un apreton | |
Zaizjunuse ped su mzo/en oc | fuertisimo con mi brazos al | |
zititez ti ja paibe. paote injin | rededor de tu cuello. cuado estes | |
id osmizin ji inpzumuzi lezwi | en amberes te escribire porque | |
obu in son ni~aze. ta ji | alli es mas seguro. du te | |
Ockutin tic tuo c wi xopi Roge | olvides del dia l que hace razo | |
ti soso nu laitin uz xo suno si nanjozuo | de mama si puedes ir ha misa me sustaria | |
nu de zi/oci oc | si no rezale al | |
siden oc~e. ic R R in nodjo zuce | menos algo. el r r es santa rilo | |
sido sodfo ado | mena manja una | |
lenjoc. jaro nuislzi, l | postal. tuya siempre, p | |
} | |
# detach the plaintext | |
PC_1 = WORKING_1.split("\n").map{|line| line.gsub(/\|.*/, '').rstrip }.join("\n") | |
PC_2 = WORKING_2.split("\n").map{|line| line.gsub(/\|.*/, '').rstrip }.join("\n") | |
# The mapping. Capital letters are hints | |
CIPHER = %w[a b c d e f g h i j k l m n o p q r s t u v V w x y z ~ ñ / Z I G E Y O R D . ? ( ) ! , ú U ] + [" ", "\n"] | |
PLAIN = %w[u ll l n o j z rr e t v p b s a c _ y m d i ll ch qu h _ r g g z f i ñ E R o r m . ? ( ) ! , í y ] + [" ", "\n"] | |
TRANS = Hash[ CIPHER.zip(PLAIN) ] | |
# This does the translation, using the mapping above ^^ | |
def translate(message) | |
message.chars.map{|cipher| TRANS[cipher] || '_' }.join | |
end | |
# output the two given texts in parallel | |
def parallel_puts(msg1, msg2) | |
msg1.split("\n").zip(msg2.split("\n")).each do |line1, line2| | |
puts "%-44s |\t%s" % [line1, line2] | |
end | |
end | |
# do the translation! | |
trans1 = translate(PC_1) ; | |
trans2 = translate(PC_2) | |
# output the result, in a form that is both readable and can be round-tripped | |
# into the source code above | |
puts "WORKING_1 = %Q{\n" | |
parallel_puts PC_1, trans1 | |
puts "}\n\nWORKING_2 = %Q{" | |
parallel_puts PC_2, trans2 | |
puts "}\n"; puts | |
# put an all-in-one-line version for pasting into google translate | |
puts trans1.gsub(/\n/, " ") ; puts | |
puts trans2.gsub(/\n/, " ") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment