Tuesday, October 2, 2012

Cuenta Larga Maya y Python


Hoy el blog va a tomar un giro un poco diferente pero este post va relacionado con la carrera que curso, la Licenciatura en Historia. Llegando hoy a clase de México Prehispánico con la Profesora Carmen Molina tuvimos la oportunidad de aprender acerca de la cuenta larga Maya, un tanto complicada pero sorprendente para una civilización prehispánica o “primitiva”, que de primitiva no tiene absolutamente nada, que me hace compararla incluso con lo que hoy conocemos como código binario.

El concepto funciona de la siguiente manera.

Los Mayas usaban múltiplos de 20, de hecho un año tenia 360 días por lo que tenia 18 meses de 20 días, mas 5 días de augurios, lo cual nos da un sorprendente total de 365 días, cosa mas que fascinante, nuevamente, para una cultura que existió hace siglos en el área de la península de Yucatan y Guatemala, al igual que otros fragmentos perdidos por ahí en ese segmento.

Mientras se nos explicaba la cuenta larga me di cuenta que sacar la cantidad es un tanto complicado a mano o calculadora, puede fallar, por lo que me di a la tarea de generar un pequeño pedazo de código en Python, un lenguaje de script que no ocupa compilarse, para correr la cuenta larga y obtener la fecha en el calendario gregoriano. El código lo libero bajo la GPL y espero que le sirva a quien quiera que lo encuentre.

¡Saludos y animo que existe todavía mucho camino por recorrer!

Nota: Para usar este script se ocupa tener instalado Python2.6 o 2.7, de hecho no importa mucho la versión, pero que este disponible y listo en la maquina. El archivo puede ser guardado con el nombre que gusten e incluso aunque no se corra directo de la consola debe funcionar aunque el resultado, si se corre desde Windows, puede desaparecer una vez que se termine de hacer la suma. De igual manera se incluyo un ligero stop por medio de un raw_input para dar tiempo de analizarlo, adicionalmente los comentario explican que es cada cosa. El script puede ser copiado así como se muestra y ser pegado en un notepad o cualquier parecido y debería funcionar como tal aunque no se da ninguna garantía por aquello de problemas de compatibilidad pero con todo gusto se me puede hacer saber cualquier problema y tratare de ayudar a solucionarlo. Como nota final solo hay que salvarlo con la terminación .py para que el interprete de Python lo corra como debe ser.

cuentalarga.py

print "Hey, este script calcula la cuenta larga Maya y la convierte al Gregoriano para despues proveerte con la edad correcta en la cual la cuenta larga te ubica.\nSomete la informacion que se te pide para que te proporcione la edad correcta."
baktun = input("Baktun: ")
katun = input("Katun: ")
tun = input("Tun: ")
uinal = input("Uinal: ")
kin = input("Kin: ")
baktun = baktun*144000
katun = katun*7200
tun = tun*360
uinal = uinal*20
kin = kin
# Las cantidades manejadas son dias, un baktun es 144000 dias, un katun es 7200, un tun 360, un uinal es 20 y los kin son unidades individuales.
# Todas estas se suman bajo la variable de gTotal para despues ser dividas entre 365, que es la cantidad de dias que tiene un anyo comun, para
# así generar una cantidad en anyos gregorianos que despues se resta contra 3115, que es la epoca de la antiguedad Maya. En teoria una vez que
# sale el numero si genera un numero negativo, es decir marca -X este tendra el signo de menos removido y en lugar de marcar d.e.C. marcara
# a.e.C. como debe corresponder por ser previo a la epoca que nosotros demarcamos como la era Comun.
gTotal = baktun+katun+tun+uinal+kin
gregoriano = gTotal / 365
maya = gregoriano - 3115
if "-" in str(maya):
a = str(maya)
final = a.replace("-","")
print final, "a.C."
else:
print maya, "d.C."
stop = raw_input("Presiona cualquier tecla para terminar...")

No comments:

Post a Comment

Buda

"Ningún hombre puede cruzar el mismo río dos veces, porque ni el hombre ni el agua serán los mismos." - Heráclito el Oscuro Pe...