martes, 1 de abril de 2008

El algoritmo Doomsday

El algoritmo Doomsday o regla Doomsday (algoritmo del "día maldito", en inglés), es un algoritmo que permite calcular en qué día de la semana cae un día de un año dado. Su nombre proviene del Doomsday, nombre en inglés del último día de febrero, y fecha en la que se basan los cálculos de este algoritmo.

Este algoritmo de cálculo mental fue inventado por el matemático inglés John Conway. Tiene la característica de proporcionar un calendario perpetuo (el calendario gregoriano, por el contrario, funciona en ciclos de 400 años, tras los que necesita una revisión). Parte del hecho de que, en el calendario (juliano o gregoriano) de cualquier año, los días 4 de abril (4/4), 6 de junio (6/6), 8 de agosto (8/8), 10 de octubre (10/10) y 12 de diciembre (12/12) siempre caen en el mismo día de la semana, siendo éste el mismo día de la semana en el que cae el último día de febrero. Hay que tener en cuenta que para el calendario juliano el Doomsday de un año cae en un día de la semana que puede diferir del que le corresponde en el calendario Gregoriano.

El algoritmo consta de tres pasos: encontrar el día marcador para el siglo, encontrar el Doomsday del año, y encontrar el día de la semana de la fecha que queremos buscar.


Cálculo del Doomsday de un año

Primero tomamos el día marcador del siglo. Recordemos que, a todos los efectos concernientes a la regla Doomsday, cada siglo comienza con un año "00" y termina con un año "99".


Siglo Marcador Mnemónico
1800-1899 Viernes
1900-1999 Miércoles En inglés, "We-in-dis-day"
aproximadamente "nosotros en este día" y similar a la pronunciación de Miércoles, Wednesday, en inglés (la mayoría de nosotros nacimos en este siglo)
2000-2099 Martes "Y-Tue-K"
(Y2K, el año 2000, fue el inicio de este siglo) Tue es la abreviatura de Tuesday, martes en inglés)
2100-2199 Domingo

A continuación, encontramos el Doomsday correspondiente al año. Para llevar esto a cabo según nos indica Conway, empezamos por dividir los dos últimos dígitos del año (llamemos a esto y) por 12 y quedándonos con la parte entera del cociente (a la que denotaremos por a) y el resto (al que llamaremos b). Después de esto, dividimos al resto por 4 y tomamos la parte entera del cociente (c). Finalmente, determinamos la suma de estos tres números para obtener el total d = a + b + c. (Es posible dividir por 7 y quedarnos con el resto. Este número es equivalente, y debe ser igual, a la suma de los últimos dos dígitos del año más la parte entera de estos dígitos dividida por 4)

Ahora, contamos hacia delante el número especificado de días (d o el resto que queda al dividirlo por 7) a partir del día marcador, y encontramos el Doomsday que corresponde a nuestro año.

\left({\left\lfloor{\frac{y}{12}}\right\rfloor+y \bmod 12+\left\lfloor{\frac{y \bmod 12}{4}}\right\rfloor}\right) \bmod 7+\rm{marcador}=\rm{Doomsday}

Por ejemplo, para el año 1966, en el siglo XX, tenemos:

\begin{matrix}\left({\left\lfloor{\frac{66}{12}}\right\rfloor+66 \bmod 12+\left\lfloor{\frac{66 \bmod 12}{4}}\right\rfloor}\right) \bmod 7+\rm{Miercoles} & = & \left(5+6+1\right) \bmod 7+\rm{Miercoles} \\ \ & = & \rm{Lunes}\end{matrix}

Por lo que el Doomsday de 1966 cayó en lunes.

Similarmente, el Doomsday de 2005 cayó también en lunes, ya que:

\left({\left\lfloor{\frac{5}{12}}\right\rfloor+5 \bmod 12+\left\lfloor{\frac{5 \bmod 12}{4}}\right\rfloor}\right) \bmod 7+\rm{Martes}=\rm{Lunes}

Cálculo del día de la semana de una fecha dada

El día de la semana de una fecha dada puede deducirse con facilidad a partir de algún Doomsday cercano.

Los siguientes días siempre caen en el Doomsday correspondiente para cualquier año en el calendario Gregoriano o Juliano:

  • 3 de enero 3 años de cada 4, esto es, los años normales; 4 de enero los años bisiestos
  • El último día de Febrero - el 28 para los años normales, o el 29 para los años bisiestos
  • "El 0 de Marzo" (según la extensión hacia atrás del calendario, se corresponde con el ultimo día de Febrero.)
  • 4 de abril
  • 9 de mayo
  • 6 de junio
  • 11 de julio
  • 8 de agosto
  • 5 de septiembre
  • 10 de octubre
  • 7 de noviembre
  • 12 de diciembre

Las fechas listadas arriba se eligieron por ser fáciles de recordar: las correspondientes a los meses pares son simplemente dobles, 4/4, 6/6, 8/8, 10/10, 12/12, y las de cuatro de los meses impares (5/9, 9/5, 7/11 y 11/7) se recuerdan usando el mnemónico "Trabajo de 9 a 5 en el 7-Eleven."

Para las fechas en marzo, el 7 de marzo cae en Doomsday, pero la pseudofecha "0 de marzo" es más fácil de recordar, ya que es necesariamente el mismo que el último día de febrero.

El Doomsday de un año está directamente relacionado con los días de la semana para fechas en el periodo comprendido entre marzo y febrero del año siguiente. Para las fechas correspondientes a enero y febrero del año en curso, debemos hacer una distinción entre años normales y bisiestos.


fuente: wikipedia

1 comentario:

Marcos Catalan dijo...

No entendí ni una güeá, pero puedo vivir sin esto.