El Doomsday o día maldito es el día de la semana que cae el último día de Febrero. Por ejemplo, para este año 2007, el día maldito es Miércoles, que es el último día de Febrero (que es el 28). La curiosidad de este día, es que coincide con el del 4/4, 6/6, 8/8, 10/10 y 12/12. Es decir, que también es el mismo día de la semana que el 4 de Abril, el 6 de Junio, el 8 de Agosto, el 10 de Octubre y el 12 de Diciembre (todos Miércoles para el 2007).
¿Y para que sirve esta coincidencia? Pues para calcular el día de la semana de cualquier fecha con un algoritmo, de manera que tenemos un calendario perpetuo. Si memorizamos este algoritmo, podemos calcular mentalmente esta fecha y así sorprender a nuestros amigos, hacer apuestas o, quien sabe, sacarle alguna utilidad en nuestro día a día.
En Java, el algoritmo queda como sigue:
Primero suponemos que los días de la semana empiezan en Lunes y que se numeran del 0 al 6 (Lunes es el 0 y Domingo el 6)
int anno = 2007;
int marcador = -1;
if (anno >= 1800 && anno <1900) {
marcador = 4;
} else if (anno >= 1900 && anno <2000) {
marcador = 2;
} else if (anno >= 2000 && anno <2100) {
marcador = 1;
} else if (anno >= 2100 && anno <2200) {
marcador = 6;
}
int y = Integer.parseInt(String.valueOf(anno).substring(2,4));
int doomsday = ((((y/12)+(y%12)+((y%12)/4))%7) + marcador)%7;
Ahora la pregunta es ¿y como calculo el día de la semana de cualquier fecha? Pues no hay una formula exacta, tan solo hay que saber cual es el doomsday del año que nos preguntan. Con ese doomsday, sabemos que días de ese mismo año coinciden: 4/4, 6/6, 8/8, 10/10 y 12/12. Así que si nos piden el 11 de Octubre, con sumarle un día al 10/10 (que es un doomsday), podemos saber en que cae. Si nos preguntan una fecha más difícil (más alejada de un doomsday conocido), entonces tenemos que tirar de otra. Por ejemplo, para los meses impares, los doomsday son: 5/9, 9/5, 7/11, 11/7, que también son fáciles de recordar.
Fuente: http://quasar.as.utexas.edu/BillInfo/doomsday.html y http://es.wikipedia.org/wiki/Algoritmo_Doomsday
Popularity: 8% [?]















[...] [Programación] El día maldito [...]