Reto Pergamino¶
Este reto consiste en descifrar un pergamino a partir de código Python
Primero veamos la estructura de los textos del pergamino.
Arqueólogos encontraron un pergamino con los siguientes textos: txt_A
y txt_B
.
xxxxxxxxxx
txt_A = '''cncdbm pjcjzct vdbbxdtw rfqsr mkt gvhkcsvw qcxr kmk pnhc zwwdsd pgjjhr
lxzscps lmbjjx lgh mdcqlbwx ppzpvfbv vdszkb njv nvmfhshh ztvkmv dfbnht xfpj nlbcwrvv
dcrzslrf wzb krdb zndtfmf fwwm vmqzmg cpcnpnww nkjk ncrmzr jfmcl hxr vcj wcptgbc
gvbfxtbv wcjlrs psjc lrljqdct ltjwn vmhp wnlmw rkvg rtm djsv rwjls ngc zcjjttpt kbg
tdjzcwj pmgtzlng zvtnbs svztn pctgq qnghqcch mclvp qdht cbk lvqckrl qmwknt cqw jfxzx
tkljpkfc mjhskxjh lfjvrhr whshcrk kvtgzpl gxglr mpqxtbzb zbrpktxj knhmmtks mhj xdlsm
wcc sbrkdjmh gpn vwddsdl mqfsrwt khhmfng qkkjgg qdr qlpt njq xlc jfhhv kgzsb lqncvrh
jgw xhjk krprtxf dtrsfb rwtzbhs qbvvz nqbh pdfqlsv hhrrx pvf mdvcfqkt bsb gcnkszfk
rkzlhbnx njfqrzxj gtvrwp cmgp qddg gqjjcbjw khlbtg cdswmbgb lmbfvsv nfhvn jbnplx gkh
dmp hmnf bzrznlh vqdmjdsb ktbcx fgvsxzp gmv xftg lxtf dcxsrkl tzwvbkfq tpvdrlf khzzw
srtfttv lmknq jvkwr bplzzpjw rgtrj gcmdfzdx ksptr jzdfqq xmtzz pkqxrsw gvwg fqppvgk hsc
hdj gthkq trxl gkhp rbr skxpc lbkw bbdqpvn llshm bhrfvh gjw zgnlpgwl pdhqn ttjtx vfb
djftp kkrr ptmnzqkg tmjlqw pcvpwjb ggd jntktdz vth wtsp mlfmddsn phn hrdqrds phbq
vkffrqvt zxljnd lqg blnw brxk skwkh vqbq dlbnhz xpbddsjw gscvghmj pxcpvkmm jsfpllns
kpmmgxb pljpvcn wknwbcq wthwv bdjxr wdc lqmtsnrn wbcjprr htldnxcn qwl fvjdqd cwmb bfjmw
chv blx xblfrb gjbbg njqw mkmnwtzv dgsxl tgtclv xxcfpp brzxg lbrnrsf pfcpt wmvjxdsw
jmstqwx zjcrkzm ndtbsqsh jqbcddqh ggvf kcr mfhllb lbbkssx gsrxcb rwtxljp cwkc xwxjhbc
pfcgz zbdbsq wzfsf gqhdfchv cgp kwvnrfm ptmzl bkjcm dpl rskfms mqdgvskt hbtjpvm swff
vjq dwlrgxtm kqzrlxz vmpdxkv bwfgzmjn zzrr mlsm kknhkq jhtxc gjvnj mcld vftnnd pgbkhc
kzzsbq xqbs hlkxtc xgj vttn zmnc kwhcrd bfjbs lxkmnzx pbmp lnt ztm fkzql bjgllxv
bghqpnl hphvdvl lwlqdh xldsnqds tsmrhhtm gnksf lzhr rqm jvcmkbxv nsx cxpplqbq jzrr tnt
wpfl lnkfqjt tplwbr hzrv mxqhpg xxzdlwzx cgrtr jbvqmb cmsqdjx qcrx ljxh jbnw lgf tzd
cltdd jtmdmt djbgqqk tgsffh hbff jjqn wtlsx qlmhxrrf sklfrc dwsk rgpgqz zhzvm brprszrc
hqlgx tdbsgf fkmrtn frskk qjvg jlhpgh rxrmqp nmc dxpx lljs kszjq hlxx nbkvsrf dggshkxz
Activity: 1 ActiveCode (ac_r02_1)
Estos pergaminos están en el antiguo y misterioso idioma Googlon. Después de muchos años de estudio, los lingüistas ya conocen algunas características de este idioma. Primero, las letras de Googlon se clasifican en dos grupos: las letras z, m, b se denominan “letras de tipo zombi”, mientras que las demás se conocen como “letras de tipo sobrevivientes”. Los lingüistas han descubierto que las preposiciones en Googlon son palabras que comienzan con una letra de tipo zombi y terminan con otra letra, es fácil ver que hay 71 preposiciones en el Texto A.
Calcule cuántas preposiciones existen en el texto B. El resultado asígnelo a la variable
prep_B
. Nota: txt_A
y txt_B
ya están definidas aunque no aparezcan en la ventana
de código siguiente.
zombi = "zmb"
Activity: 2 ActiveCode (ac_r02_2)
Otro hecho interesante descubierto por los lingüistas es que, en Googlon, los verbos son siempre palabras de 7 letras que terminan en una letra de tipo sobreviviente. Además, si un verbo comienza con una letra de tipo sobreviviente, el verbo está en primera persona. Así, leyendo el Texto A, es posible identificar 84 verbos en el texto, de los cuales 70 están en primera persona.
Calcule cuántos son los verbos en el Texto B, y asigne ese valor a la variable verbos_B
. Después
calcule cuántos de esos verbos están en primera persona, y asigne ese valor a la variable persona_1_B
.
Recuerde: los textos ya están definidos, al igual que la variable zombi
del código anterior.
persona_1_B = 0
Activity: 3 ActiveCode (ac_r02_3)
Un profesor universitario utilizará los textos A y B para enseñar Googlon a los estudiantes. Para ayudar a los alumnos a comprender el texto, este profesor necesita crear una lista de vocabulario para cada texto, es decir, una lista ordenada de las palabras que aparecen en cada uno de los textos. Estas listas deben ordenarse. En Googlon, como en nuestro alfabeto, las palabras están ordenadas lexicográficamente, pero el problema es que en Googlon, el orden de las letras en el alfabeto es diferente al nuestro. Su orden es: zmbtshjpnwlrcxkqvdgf. Por lo tanto, al hacer estas listas, el profesor debe respetar el orden alfabético de Googlon.
El profesor preparó la lista de vocabulario (ordenada) para el Texto A; obsérvela en la variable
lista_A
. ¿Cuál sería la lista de vocabulario ordenada del Texto B? Haga un programa que realice
esta lista, y la guarde en la variable lista_B
. Recuerde: los textos ya están definidos como
en el primer ejercicio (Ejercicio 1).
'mfhllb', 'bzrznlh', 'bzccxd', 'bzqcnzwp', 'bzfqkpjj', 'bmzqtdx', 'bmt', 'bbzvs', 'bbdqpvn', 'bsb', 'bslbmwm', 'bhrfvh', 'bjgllxv', 'bpngkf', 'bplzzpjw', 'bwfgzmjn', 'blnw', 'blx', 'brzxg', 'brprszrc', 'brxk', 'bkjcm', 'bvrjztfm', 'bdjxr', 'bdnfbh', 'bghqpnl', 'bfjmw', 'bfjbs', 'tzhqvbt', 'tzwvbkfq', 'tzqcvz', 'tzd', 'tmjlqw', 'tbw', 'ttjtx', 'ttl', 'tsmrhhtm', 'tjpdp', 'tjw', 'tjgmjzh', 'tpppxf', 'tplwbr', 'tpvdrlf', 'tnbqgv', 'tnt', 'twjhgcc', 'twxcfxk', 'tlthnhrh', 'trzz', 'trxl', 'trvpx', 'txz', 'tkljpkfc', 'tqbs', 'tvphkg', 'tvpjwzb', 'tdbsgf', 'tdsbdhv', 'tdjzcwj', 'tgmwmsc', 'tgtclv', 'tgsffh', 'tgjpq', 'tgnq', 'tgq', 'szzh', 'szbmqd', 'szltzjm', 'smtkrxjx', 'smdlrm', 'sbst', 'sbnfjs', 'sbrkdjmh', 'spzzbc', 'swff', 'srtfttv', 'srwg', 'sxcdqtlt', 'skhcwxw', 'skwkh', 'sklfrc', 'skxpc', 'skkfq', 'svztn', 'sfwsnkkw', 'hzrv', 'hzdb', 'hmnf', 'hbtjpvm', 'hbff', 'htldnxcn', 'htkmdbx', 'hsc', 'hhrrx', 'hhcxnnhn', 'hphvdvl', 'hwfbd', 'hljqwkz', 'hlnls', 'hlxx', 'hlkxtc', 'hrdqrds', 'hcr', 'hxr', 'hqlgx', 'hdslhv', 'hdj', 'hgsx', 'hffjd', 'jzzpb', 'jzrr', 'jzdfqq', 'jmstqwx', 'jmqkbclx', 'jbmlsfkx', 'jbnplx', 'jbnw', 'jbw', 'jbvqmb', 'jtmdmt', 'jtwhxdx', 'jsfpllns', 'jsfkd', 'jhztz', 'jhtxc', 'jjqn', 'jplzc', 'jntktdz', 'jlhpgh', 'jlgz', 'jcw', 'jxsd', 'jxnng', 'jkk', 'jqbcddqh', 'jqjgd', 'jvcmkbxv', 'jvkwr', 'jvvc', 'jgw', 'jgl', 'jfmcl', 'jfhhv', 'jfxzx', 'pznlvfk', 'pmmd', 'pmnt', 'pmgtzlng', 'pbmp', 'ptmzl', 'ptmnzqkg', 'ptg', 'psjc', 'phbq', 'phn', 'phk', 'pjcjzct', 'ppzpvfbv', 'ppsp', 'pphslgf', 'pnhc', 'pwpznr', 'pljpvcn', 'plphnnv', 'plkxf', 'pctgq', 'pcl', 'pcvpwjb', 'pxcpvkmm', 'pkqxrsw', 'pqsq', 'pqc', 'pvf', 'pdhqn', 'pdnqm', 'pdxjxpxr', 'pdfqlsv', 'pgbkhc', 'pgjjhr', 'pgwd', 'pfcpt', 'pfcgz', 'pfkjshg', 'nmmqnzfn', 'nmc', 'nmdzgmnr', 'nbkvsrf', 'nsx', 'njq', 'njqw', 'njv', 'njfqrzxj', 'nwjjkrdq', 'nlbcwrvv', 'nlvgr', 'nrpzqfr', 'ncrmzr', 'nkjk', 'nqbh', 'nqjflf', 'nvmfhshh', 'nvb', 'ndtbsqsh', 'ngsbphqb', 'ngwrbrfk', 'ngc', 'ngkgnln', 'ngqzs', 'nfhvn', 'nfkltv', 'nfv', 'wzb', 'wzg', 'wzfsf', 'wmvjxdsw', 'wbht', 'wbcjprr', 'wtsp', 'wthwv', 'wtlsx', 'wtfh', 'whshcrk', 'whnjkv', 'wjg', 'wptc', 'wpfl', 'wnlmw', 'wwmngbk', 'wlsxsvf', 'wlj', 'wrzct', 'wrsctd', 'wrgf', 'wcjlrs', 'wcptgbc', 'wcpn', 'wcc', 'wxxchz', 'wknwbcq', 'wkq', 'wdc', 'wdxmfr', 'wfqxrnzf', 'wffrgzp', 'lzhr', 'lzq', 'lzgfnkmg', 'lmbtkhch', 'lmbjjx', 'lmbfvsv', 'lmknq', 'lmq', 'lbbkssx', 'lbrnrsf', 'lbkw', 'lbqjrp', 'ltjwn', 'ltqxkt', 'lsmphpk', 'ljxh', 'ljdz', 'lphf', 'lnt', 'lnkfqjt', 'lwlqdh', 'lwdbkws', 'llshm', 'lljs', 'lllkssb', 'lrljqdct', 'lxzscps', 'lxtf', 'lxkmnzx', 'lqmtsnrn', 'lqncvrh', 'lqg', 'lvwht', 'lvq', 'lvqckrl', 'lgh', 'lgf', 'lfhkmb', 'lfjvrhr', 'rzp', 'rmmhtmbp', 'rbr', 'rtm', 'rtb', 'rtxct', 'rskfms', 'rsqb', 'rsd', 'rhhmzvp', 'rjldhzld', 'rpxwnbrw', 'rwtzbhs', 'rwtxljp', 'rwjls', 'rrflt', 'rcfxhhh', 'rxrmqp', 'rkzlhbnx', 'rkvg', 'rqm', 'rqkr', 'rdrphff', 'rgtrj', 'rgpgqz', 'rflzw', 'rfqsr', 'rfqdh', 'czhhtclr',
Activity: 4 ActiveCode (ac_r02_4)
Pero, ¿cómo escriben los Googlons los números? Bueno, en Googlon, las palabras también son números dados en base 20, donde cada letra es un dígito. En Googlon, la primera posición es la unidad y corresponde a la letra de hasta la izquierda de la palabra, la segunda posición tiene un valor de 20, la tercera de 400 y así sucesivamente. Los valores de las letras se dan en el orden en que aparecen en el alfabeto Googlon (que es diferente de nuestro orden, como vimos anteriormente). Es decir, la primera letra del alfabeto Googlon, que es la z, representa el dígito 0, la segunda representa el dígito 1, y así sucesivamente.
Por ejemplo, la palabra zmbzmb
tiene un valor numérico de 6560820
. La explicación es la siguiente:
En el albafeto Googlon, las letras z
m
y b
son las tres primeras. Si representamos esa
palabra en dígitos según las reglas anteriores, éste sería su valor: 012012
. Como último paso hace falta
convertirlo a base 20. Según las reglas anteriores, la conversión se hace de la siguiente forma:
(0∗1)+(1∗20)+(2∗202)+(0∗203)+(1∗204)+(2∗205)=6560820
Los Googlons consideran un número mágico (muy raro) si satisface una propiedad: el valor numérico es divisible por 42 (respuesta para todo) y todos los dígitos son distintos entre sí. Al considerar el Texto A como una lista de números (es decir, interpretar cada palabra como un número usando la convención explicada anteriormente), notamos que hay 8 números mágicos: kpbslq, gtrpzhwb, ghfntj, ljdz, gthkq, lbqjrp, jplzc y gjw.
Y en el Texto B, ¿cuántos números mágicos hay y cuáles son? Guarde en la variable num_magicos
la cantidad de números mágicos que hay en el Texto B, y en la variable magia
guarde cuales son.
Recuerde: Los textos ya están definidos, al igual que la variable orden
del ejercicio anterior.
"""Esta función convierte una palabra a su valor numérico"""
Activity: 5 ActiveCode (ac_r02_5)