Sunteți pe pagina 1din 4

Algoritmo para calcular fechas (Calendario Universal)

Para saber qué día de la semana corresponde a una fecha dada del siglo XX, basta que
averigüemos cuántos días han pasado entre la fecha dada y el domingo 31 de diciembre
de 1899. Procedamos con un caso particular. Para comenzar, hagámoslo para el 23 de
enero de 1900. Si dividimos entre 7 los 23 días transcurridos del año, obtenemos un
cociente de 3 y un residuo de 2 (23 = 3 × 7 + 2), lo que significa que han pasado tres
semanas y dos días. Ahora bien, si nos desplazamos, a partir del domingo 31 de diciembre
de 1899, las tres semanas exactas, seguiremos estando en domingo. Desplacémonos
ahora los dos días faltantes para completar los 23 y estaremos en martes.
Del ejemplo anterior se deriva una primera lección: cuando queramos saber qué día
resulta al corrernos por el calendario un número dado de días a partir de un domingo,
basta dividir dicho número por 7 y contar, a partir del domingo, un número de días igual al
residuo de la división. En otras palabras, para saber el efecto sobre el día de la semana de
un corrimiento dado, podemos olvidar el número de semanas transcurridas, dado por el
cociente de la división entre 7, y fijarnos solo en el residuo, esto es, podemos reemplazar
el corrimiento por su residuo al dividirlo entre 7, lo que llamaremos reducir el número
módulo 7. Por ejemplo, para saber el día de la semana correspondiente a un corrimiento
de 59 días a partir del 31 de diciembre de 1899, reducimos 59 módulo 7, esto es, hallamos
el residuo de la división entera de 59 entre 7, que nos dará 3 (59 = 7 × 8 + 3). Ahora nos
movemos 3 días a partir del domingo, para caer en miércoles. En general, si a partir de un
domingo nos desplazamos hacia el futuro una cantidad n de días, basta dividir n entre 7 y
tomar el residuo r, con el cual efectuamos el desplazamiento definitivo, siguiendo esta
sencilla regla: si r es 0 se trata de un domingo, si r es 1, de un lunes, si r es 2, de un martes,
si r es 3, de un miércoles, y así sucesivamente.
Entendido lo anterior, pasemos a desarrollar un método que nos permita saber el número
de días transcurridos entre el 31 de diciembre de 1899 y cualquier fecha que nos den.
Antes de comenzar a derivar el método general, es importante hacer dos aclaraciones.
Primero: como los años normales tienen 365 días, y 365 = 7 × 52 + 1, entonces por cada
año que pasa, el día de la semana se corre un día. Así, por ejemplo, el 31 de diciembre de
1900 fue lunes, pues un año atrás en la misma fecha fue domingo, y el 31 de diciembre de
1901 fue martes, pues un año antes fue lunes. Segundo: dado que los años bisiestos
tienen 366 días, y 366 = 7 × 52 + 2, después de transcurrido uno de estos años, el día de la
semana se desplaza dos días. Por ejemplo, como el primero de enero de 1904, año
bisiesto, fue jueves, un año después será sábado, esto es, habrá un corrimiento de dos
días debido al hecho de que el año bisiesto tiene 366 días.
Algoritmo
Estamos ahora en capacidad de elaborar una metodología que nos permita resolver el
problema propuesto. Supongamos que nos dan una fecha, 20 de abril de 1933, por
ejemplo, y nos preguntan en qué día de la semana cayó. Para comenzar, sabemos que
desde el 31 de diciembre de 1899 hasta el 31 de diciembre de 1932 han transcurrido 33
años completos (1900, 1901, 1902, ..., 1932), es decir, que los dos últimos dígitos del año
dado nos indican los años transcurridos. Ahora bien, por cada uno de los 33 años
transcurridos hay un desplazamiento de una unidad en el día de la semana, según se
explicó en el párrafo anterior, salvo los años bisiestos, que aportan 2 desplazamientos.
Esto quiere decir que para saber cuántos corrimientos corresponden a los 33 años
transcurridos, primero podemos averiguar cuántos bisiestos hay en 33 años, lo que es
igual al cociente de la división entera de 33 entre 4 (son bisiestos los múltiplos de 4), o
sea, 8 bisiestos. Entonces, el total de corrimientos acumulados en los 33 años es 41 (33
por los años transcurridos y 8 adicionales aportados por los bisiestos).
Calculemos ahora los días transcurridos entre el 31 de diciembre de 1932 y la fecha dada,
20 de abril de 1933. Son 31 días de enero, 28 de febrero (33 no es bisiesto), 31 de marzo y
los 20 de abril, lo que nos da un total de 110 días. Sumamos ahora estos 110 días a los 41
ya calculados en el párrafo anterior, para obtener 151, que reducido módulo 7 da 4 (151 =
7 × 21 + 4). Esto quiere decir que el día de la semana se ha corrido 4 días a partir de un
domingo, lo que nos lleva a un jueves.
Ahora podemos presentar los cálculos anteriores de una manera más sencilla y
sistemática, de tal modo que se puedan realizar mentalmente sin demasiado esfuerzo.
Para comenzar, separamos los dos últimos dígitos del año dado, 33 en el ejemplo, y a este
número lo llamaremos el año. Dividimos ahora el año entre 4 y el cociente obtenido, que
llamaremos los bisiestos, lo sumamos al año (la operación de hallar el cociente de la
división entera de n entre 4 la escribiremos [n/4]). Pasamos ahora a calcular los días
transcurridos desde el fin del año inmediatamente anterior hasta la fecha dada. Para esto
sumamos los 31 días correspondientes a enero, los 28 o 29 de febrero, los 31 de marzo,
etcétera, hasta llegar al mes anterior al dado en la fecha, y a este total, que llamaremos
abreviadamente los meses, agregamos los días que se enuncian en la fecha dada (20 en el
ejemplo del párrafo anterior). Finalmente, sumamos el año, los bisiestos, los meses y los
días, reducimos este número módulo 7 y el valor obtenido, siempre entre 0 y 6, nos dará
el corrimiento a partir de domingo. Si el valor fuese 0, por ejemplo, no habría corrimiento
y la repuesta sería “domingo”, si fuese 1 la respuesta sería “lunes”, si fuese 2 sería
“martes”, y así sucesivamente. Para cualquier fecha del siglo XX la fórmula general es
entonces la siguiente:
D = (año + bisiestos + meses + días) reducido módulo 7
Apliquemos ahora la fórmula anterior a un caso particular. Por ejemplo, determinar el día
de la semana correspondiente al 8 de junio de 1939.
D = 39 + [39/4] + (31 + 28 + 31 + 30 + 31) + 8 = 207 (módulo 7) = 4
Por ser D = 4, la respuesta es jueves.
Para hacer los cálculos de manera mental hay una simplificación que facilita las
operaciones: reducir los diferentes sumandos módulo 7 antes de llevarlos al gran total.
Como ejemplo, resolvamos de nuevo el problema anterior. El año, 39, módulo 7 es 4,
porque 4 es el residuo que resulta al dividirlo entre 7. Los bisiestos son [39/4] = 9, que
reducido módulo 7 es 2. Para los meses tenemos: los 31 días de enero se reducen a 3
módulo 7, los 28 de febrero a 0, los 31 de marzo a 3, los 30 de abril a 2 y los 31 de mayo a
3. Finalmente, los 8 días de junio se reducen a 1 módulo 7, por lo que la suma total será
ahora:
D = 4 + 2 + (3 + 0 +3 + 2+ 3) + 1 = 18 módulo 7 = 4
Para llevar la cuenta de los meses, tal vez la más laboriosa, la regla de la mano izquierda es
muy útil. Basta que distribuyamos los meses del año de la forma como se ilustra en la
figura 20.25. Se puede observar que los meses que corresponden a los nudillos son de 31
días, mientras que los que corresponden a los espacios entre nudillos, salvo febrero, son
de 30. Para averiguar el número correspondiente a meses, recorremos los nudillos de
derecha a izquierda, de tal modo que para cada mes anterior al de la fecha dada,
sumamos 3 por enero (primer nudillo), 0 por febrero (primer espacio entre nudillos), 3 por
marzo (segundo nudillo), 2 por abril (segundo espacio), y así sucesivamente. Si el mes es
posterior a agosto, volvemos al primer nudillo y seguimos la cuenta. La regla general es
que por cada nudillo se suman 3 unidades y 2 por cada espacio entre nudillos, salvo para
el de febrero, en que no sumamos nada. Si, por ejemplo, la fecha cae en octubre,
debemos recorrer los nudillos hasta llegar al correspondiente a septiembre, mes anterior
a octubre, para lo cual debemos efectuar la siguiente suma: 3 (enero) + 0 (febrero) + 3
(marzo) + 2 (abril) + 3 (mayo) + 2 (junio) + 3 (julio) + 3 (agosto) + 2 (septiembre) = 21.
La fórmula general se puede complementar de tal modo que nos sirva para calcular el día
de la semana correspondiente a cualquier siglo. Para ello basta agregar a la fórmula
general un sumando que llamaremos el siglo, y que se obtiene por medio de la expresión
siglo = 6 - 2 × (S módulo 4), en la que S es el número que resulta al suprimir los dos últimos
dígitos del año dado. Por ejemplo, si nos piden un día de la semana del año 1933, S será
19, y si se trata del año 2002, S será 20. Entonces, para hallar el día de la semana
correspondiente a fechas del 2002, la expresión anterior nos da:
siglo = 6 - 2 × (20 módulo 4) = 6 - 2 × 0 = 6.
Para hallar fechas correspondientes a cualquier año que comience por 19, como 1939, la
expresión da:
siglo = 6 - 2 × (19 módulo 4) = 6 - 2 × 3 = 0,
por lo que no es necesario incluir este sumando en los cálculos. Para fechas del siglo XV y
anteriores a octubre 16 de 1582 realizamos los cálculos en la forma usual y luego nos
corremos 10 días adicionales, que módulo 7 son 3. Esta corrección se
debe a que en la reforma gregoriana se dispuso que al jueves 4 de octubre de 1582
seguiría el viernes 15. Para fechas anteriores al 31 de diciembre de 1499 se deben hacer
correcciones adicionales en los números correspondientes a los siglos (no se explicarán),
pues en esa época los años terminados en doble cero eran todos bisiestos, pero después
de la reforma solo fueron bisiestos los dobles ceros múltiplos de 400.
Para disponer de una fórmula definitiva, es necesario tener en cuenta un pequeño detalle
adicional: cuando nos dan una fecha que corresponde a un año bisiesto, por ejemplo,
1940 (múltiplo de 4), y que el día cae en enero o febrero, dado que en los cálculos hemos
adicionado un día en el sumando bisiestos, y ese corrimiento de un día no se hace efectivo
hasta después del 29 de febrero, en el valor de D calculado por el procedimiento ya
descrito debemos restar 1. Es conveniente recordar que, en la reforma gregoriana,
efectuada el 15 de octubre de 1582, los años terminados en doble cero, como 1800, 1900,
2000, etc. son bisiestos solo si son múltiplos de 400, los restantes no lo son, a pesar de
que sean múltiplos de 4. Por ejemplo, 1600 fue bisiesto, por ser múltiplo de 400, pero
1700, 1800 y 1900 no lo fueron. Por esa misma razón, 2001, 2002 y 2003 tampoco lo son,
pero 2000 y 2004 si son bisiestos.
Entonces, la fórmula definitiva para calcular cualquier fecha dada será:
D = siglo + año + bisiesto + meses + días (se resta una unidad a este total para todas las
fechas de enero y febrero de años bisiestos)
Si D = 0 se trata de un domingo; si D = 1 se trata de un lunes; si D = 2 se trata de un
martes, y así sucesivamente.

JDV

S-ar putea să vă placă și