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
.
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.
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.
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).
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 * 20^2) + (0 * 20^3) + (1 * 20^4) + (2 * 20^5) = 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.