Esta es una actividad opcional individual que consiste de dos partes:
Si un alumno cumple adecuadamente con ambas partes se hará acreedor a 30 puntos adicionales en la calificación del registro en la que haya salido más bajo durante el semestre.
NOTA: El programa elaborado (junto con las modificaciones solicitadas) se deberá entregar junto con los demás problemas del examen final.
Revisa la entrada de Wikipedia sobre la numeración maya para entender cómo funciona este sistema numérico.
Este problema consiste en convertir números a su equivalente en notación maya. Para ello necesitamos la siguiente tabla:
Número decimal |
Símbolos de la notación maya en representación textual |
---|---|
0 |
@
|
1 |
.
|
2 |
..
|
3 |
...
|
4 |
....
|
5 |
–
|
6 |
.–
|
7 |
..–
|
8 |
...–
|
9 |
....––
|
10 |
––
|
11 |
.––
|
12 |
..––
|
13 |
...––
|
14 |
....––
|
15 |
–––
|
16 |
.–––
|
17 |
..–––
|
18 |
...–––
|
19 |
....–––
|
Los símbolos de la tabla se colocan en uno o más renglones (o niveles). El valor del símbolo del último renglón se multiplica por 200, el del penúltimo renglón por 201, el del antepenúltimo renglón por 202, y así sucesivamente para finalmente sumar todos estos resultados parciales.
Por ejemplo, el número 2017 en notación maya se puede representar textualmente así:
- @ ..---
Esto es así dado que: (5 × 202) + (0 × 201) + (17 × 200) = 2017.
Escribe un programa en Python 3.5 llamado maya.py
. Dentro de este programa define una función llamada maya(archivo_salida, lista_numeros)
. Esta función debe convertir cada número entero positivo contenido en lista_numeros
a su correspondiente notación maya, escribiendo el resultado en un archivo de texto cuyo nombre está en la cadena archivo_salida
.
Se debe considerar lo siguiente:
Antes de escribir el número en notación maya se debe agregar un titulo de la forma:
=== n ===
en donde n
el número en decimal siendo convertido.
Al final, cuando se haya terminado de convertir y escribir todos los números, se debe escribir la siguiente línea:
=== fin ===
Añade al programa la siguiente función main
:
def main(): maya('salida1.txt', [32, 429, 5125]) maya('salida2.txt', [0, 401, 2017, 2 ** 100])
Al correr el programa se crean dos archivos con los contenidos que se muestran a continuación:
Archivo salida1.txt
:
=== 32 === . ..-- === 429 === . . ....- === 5125 === ..-- .--- - === fin ===
Archivo salida2.txt
:
=== 0 === @ === 401 === . @ . === 2017 === - @ ..--- === 1267650600228229401496703205376 === . -- .... ....- - ... - .-- ..- ...-- ..- - . ..- ....- --- ....--- - ....--- --- @ ...-- ...- .--- === fin ===