Skip to content

Instantly share code, notes, and snippets.

@mrflip
Created November 23, 2012 18:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrflip/4136802 to your computer and use it in GitHub Desktop.
Save mrflip/4136802 to your computer and use it in GitHub Desktop.
Mysterious Postcard translator
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
#!/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