viernes, 12 de noviembre de 2010

Doomsday algorithm

Calcular  mentalmente con  Doomsday algorithm 
permite determinar -mentalmente y en menos de 30 segundos- que día de la semana fue o será una fecha cualquiera del calendario Gregoriano
Veamos en que consiste y cómo se usa.


El funcionamiento del “Doomsday algorithm” se basa en la premisa de que para cualquier año existen una serie de fechas fáciles de recordar que “caen” siempre en el mismo día de la semana. Los años bisiestos -aquellos en que Febrero tiene 29 días- suponen una complicación adicional, ya que todas las fechas posteriores a ese día se “corren”, pero Conway evita este problema de la misma forma en que hacían los romanos: considerando el primer día del año al 1 de Marzo, y como “fin de año” el último día de febrero. Las fechas que debemos recordar son las siguientes:
  • El “0”de Marzo” (el último día de Febrero, en realidad),
  • El 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
  • 2 de Enero (del año siguiente)
  • 13 de Febrero (del año siguiente)
¿Crees que es imposible recordar esas fechas? Pues te equivocas. Si miras con detenimiento la lista anterior, notarás que -dejando de lado los meses de Enero y Febrero, todas las correspondientes a meses pares tienen la forma “n/n” :4/4, 6/6, 8/8, 10/10 y 12/12. Y las que corresponden a los meses impares son 9/5, 11/7, 5/9 y 7/11. Estas cuatro pueden resultar un poco más difíciles, pero los anglosajones lo tienen fácil gracias al mnemónico "I work from 9 to 5 at the 7-11"( o "Trabajo de 9 a 5, en el Seven-Eleven", donde “Seven-Eleven” es una cadena de tiendas muy famosas en Estados Unidos). Como sea, esa frase nos permite recordad las cuatro fechas en cuestión. Y la dos restantes corresponden al día de la toma de Granada y la víspera de San Valentín, así que con poco trabajo lograrás memorizar la lista.
Gracias a Conway puedes olvidarte de los calendarios. (Tomas Carrillo)
Esas fechas, como te adelantamos, caen todas en el mismo día de la semana, y Conway las denomina “Día del Juicio", de donde proviene el nombre del algoritmo. Determinando que día de la semana es el que corresponde para el año de la fecha que queremos  “adivinar”, podemos calcular sin problemas el dato que estamos buscando. Para encontrar el “Doomsday” aprovechamos que el calendario Gregoriano (si, el mismo que usamos todos los días en nuestra vida cotidiana) se repite cada 400 años, o lo que es lo mismo, cada cuatro siglos. Para simplificar los cálculos, vamos a asumir que cada siglo comienza enlos años acabados en "00" y finalizan en los años acabados en "99". Conway llama al primer “Doomsday” de cada siglo “marcador de siglo”, y se repite cada 400 años. Esos días son:
  • Siglo 1800-1899: Viernes
  • Siglo 1900-1999: Miércoles
  • Siglo 2000-2099: Martes
  • Siglo 2100-2199: Domingo
Veamos ahora como calcular el “Doomsday” de un año cualquiera. Si llamamos “y” a los dos últimos dígitos del año en que estamos trabajando, el “Doomsday” correspondiente se calcula con la siguiente fórmula:

El “Doomsday” del año es igual a y+q+r+s. (Wikipedia)
Antes que cierres el navegador espantado por semejante sarta de símbolos matemáticos, lee la siguiente explicación: El Doomsday se calcula sumando al marcador del siglo el resultado de la división (sin tener en cuenta los decimales) entre los dos últimos dígitos del año y 12, más el resto de dicha división, más ese mismo resto dividido 4. En otras palabras, tomamos “y”, lo dividimos por 12 para obtener un cociente (“g”) y un resto (“r”). A “r” lo dividimos por 4 y obtenemos un nuevo cociente (“s”). El “Doomsday” del año es igual a y+q+r+s. Si ese valor es mayor que 7 (algo muy probable)  lo dividimos entre 7 y nos quedamos con el resto. ¡Es fácil!
¿Te animas a calcularlo tú mismo? (Flickr/Jennol)
Veamos un ejemplo. Supongamos que queremos calcular que día de la semana fue el 14 de Octubre de 1968. El marcador para ese siglo (1900-1999) es Miércoles, y el valor de “y” es 68, que al dividir entre 12 nos da 5, con resto 8. Al dividir el resto entre 4 nos da 2, así que el “Doomsday” es igual a 68 + 5 + 8 + 2 = 83. Dividimos por 7 y obtenemos el resto: 6. Como el marcador de ese siglo es Miércoles, el 10/10 nuestra referencia para ese mes, y 6 nuestro “Doomsday”, contamos hacia delante 6 días: Miércoles, Jueves, Viernes, Sábado, Domingo y Lunes. Es decir, el 14 de Octubre de 1968 es Lunes. ¿Interesante, verdad? Otro ejemplo rápido: hoy es 12 de Noviembre de 2010 ¿Que día de la semana es? Fácil: Marcador de siglo: Martes. “Doomsday” igual a 6 (te dejamos calcularlo a ti, recuerda que para 2010 “y” = 10). El 7/11 es nuestro marcador más cercano, y es Domingo (6 días contando a partir de Martes). Si el 7/11 fue Domingo, el 12/11 es Viernes. Sabiendo todo esto: ¿Te animas a calcular que día de la semana fue cuando naciste?