Python R2


Que dia cayo el DD/MM/YYYY?

Posted in Python por Arturo Elias Antón en 17 diciembre 2008
Tags: , , ,

Leyendo la Linux magazine 39 me gusto mucho la nota titulada “juegos matemáticos con script Perl TRUCO MENTAL”. Bueno la idea es que pasándonos una fecha, nosotros decimos que día fue de la semana. Me gusto muchísimo el truco, lo que no me gusto que el script estaba echo en Perl y entonces lo hice en python 🙂 espero que les guste.


def esBisiesto(yyyy):
    esDiv4 = yyyy%4==0
    esDiv100 = yyyy%100==0
    esDiv400 = yyyy%400==0
    if esDiv4 and esDiv400: return True
    if esDiv4 and esDiv100: return False
    if esDiv4: return True
    return False

def queDiaEs(dd,mm,yyyy):


    if mm > 12: return -1,"Mes invalido"
    if dd > 31: return -2,"Dia invalido"


    for m in  [2,4,6,9,11]: # meses con 30 dias y febrero que tiene 28/29 dias
        if (dd,mm) == (31,m): return -2,"Dia invalido"

    if (dd,mm)==(30,2):
        return -2,"Dia invalido"
    if (dd,mm)==(29,2) and not esBisiesto(yyyy):
        return -2,"Dia invalido"


    yy = yyyy%100
    meses = [0,3,3,6,1,4,6,2,5,0,3,5]
    dia = ["Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"]
    valorYY = (yy + (yy / 4))%7

    ajuste = [6,4,2,0][(yyyy/100)%4]

    if mm in (1,2) and esBisiesto(yyyy): ajuste -=1

    numDia = ((dd + meses[mm-1] + valorYY + ajuste) % 7)
    return numDia, dia[numDia]

Solo una corrección a la nota de la revista si la tienen fíjense que en la tabla 4 el ultimo ejemplo en verdad esta mal puesto el día ya que dice miércoles y tendría que decir jueves saludos

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: