Saltar al contenido

Recommended Posts

publicado

Hay cálculos que nos fastidian porque son muy difíciles o porque no nos salen y decimos que nos hacen la Pascua en sentido figurado.

Los cálculos o Computus que propongo son para obtener el Domingo de Pascua (Easter Sunday) que han hecho "la Pascua" a los matemáticos, astrónomos, programadores y calculadoras humanas desde el siglo IV.

Hasta logroastur intentó resolver los días de Semana Santa en el post #53 del tema Número de semana.

Para que estos cálculos no nos hagan "la Pascua" y no nos fastidien dando fechas equivocadas, he recopilado las fórmulas y UDFs más precisas y curiosas que calculan el Domingo de Pascua en mi blog:

pedrowave.blogspot.com/2010/09/computos-que-hacen-la-pascua.html

Se pueden descargar desde aquí: EasterSundayCalculation.zip

La fórmula más curiosa e incomprensible para mí, que vale para los años 1900 a 2203, es:

=MONEDA(("4/"&A1)/7+RESTO(19*RESTO(A1;19)-7;30)*14%*7-6[/CODE]

[b][i]¿La comprendes? ¿Conoces alguna fórmula o función mejor?[/i][/b]

Si quieres saber más sobre este tema mira mi blog:

Cómputos que hacen la "Pascua" | Pedro Wave Blog Spot

publicado

Adjunto fichero con varias funciones y fórmulas que calculan los domingos de Semana Santa según el Calendario Gregoriano desde 1900 hasta 2204, año para el que fallan todas las fórmulas.

Sería interesante encontrar una fórmula mejor. :P

En la columna B está el mejor algoritmo reconocido con el que se comparan las fechas.

Los domingos de Pascua erróneos se marcan de naranja y los errores de cálculo en rojo.

DomingoPascua.zip

publicado
Este... muchas gracias espero llegar el 2050 por lo menos para comprobar... jejeje

Slds Jp

Hola jackpvs, compruébalo ahora mismo con Microsoft ExcelWebApp, la nueva herramienta de Excel para insertar hojas de cálculo en blogs y páginas web, y para no tener que esperar llegar al 2050 la acabo de introducir en mi blog: Cómputos que hacen la "Pascua" | Pedro Wave Blog Spot

2moc938.jpg

Como ves, en las columnas C y E hay cálculos que hacen "la Pascua" porque las fórmulas originales que aparecen en las páginas web están escritas con el formato de fechas en inglés y funcionarían cambiando la configuración regional del sistema operativo.

Por ejemplo, para la fórmula original en inglés:

=DOLLAR(("4/"&DAY(MINUTE(A1/38)/2+55)&"/"&A1)/7,)*7-6[/CODE]

traducida a Excel en español (Columna C):

[CODE]=MONEDA(("4/"&DIA(MINUTO(A1/38)/2+55)&"/"&A1)/7;)*7-6[/CODE]

el formato de fechas es "M/D/AAAA" (mes/día/año) y falla =¡VALOR!, por lo que aconsejo usar esta versión que no depende del formato de las fechas (Columna D):

[CODE]=MONEDA(FECHA(A1;4;DIA(MINUTO(A1/38)/2+55))/7;)*7-6[/CODE]

En la columna H he metido como he podido la megafórmula:

[PHP]=FECHA(A1;SI(SI(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=29;-1;SI(Y(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=28;RESTO(A1;19)>10);-1;0))+RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)+21+RESTO((20-(RESTO((SI(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=29;-1;SI(Y(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=28;RESTO(A1;19)>10);-1;0))+RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)+21-19);7))-(SI(SI(RESTO((40-(ENTERO(A1/100)-20));4)=3;1;0)+RESTO((40-(ENTERO(A1/100)-20));4)>1;1;0)+SI(RESTO((40-(ENTERO(A1/100)-20));4)=3;1;0)+RESTO((40-(ENTERO(A1/100)-20));4))-(RESTO((RESTO(A1;100) + ENTERO(RESTO(A1;100) / 4));7)));7)+1>31;4;3);SI(SI(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=29;-1;SI(Y(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=28;RESTO(A1;19)>10);-1;0))+RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)+21+RESTO((20-(RESTO((SI(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=29;-1;SI(Y(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=28;RESTO(A1;19)>10);-1;0))+RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)+21-19);7))-(SI(SI(RESTO((40-(ENTERO(A1/100)-20));4)=3;1;0)+RESTO((40-(ENTERO(A1/100)-20));4)>1;1;0)+SI(RESTO((40-(ENTERO(A1/100)-20));4)=3;1;0)+RESTO((40-(ENTERO(A1/100)-20));4))-(RESTO((RESTO(A1;100) + ENTERO(RESTO(A1;100) / 4));7)));7)+1>31;-31;0)+SI(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=29;-1;SI(Y(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=28;RESTO(A1;19)>10);-1;0))+RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)+21+RESTO((20-(RESTO((SI(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=29;-1;SI(Y(RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)=28;RESTO(A1;19)>10);-1;0))+RESTO(SI((ENTERO(A1/100)-20)<13;0;ELEGIR((ENTERO(A1/100)-20)-12;-2;0;0;-2;-2;0;-2;-2))+SI((ENTERO(A1/100)-20)<1;0;ELEGIR((ENTERO(A1/100)-20);-1;0;0;-1;-1;0;-1;-1;-1;-1;-1;-1;0;-1;-1;0;0;-1;0;0))+ENTERO(((ENTERO(A1/100)-20)+5)/2)+202-11*RESTO(A1;19);30)+21-19);7))-(SI(SI(RESTO((40-(ENTERO(A1/100)-20));4)=3;1;0)+RESTO((40-(ENTERO(A1/100)-20));4)>1;1;0)+SI(RESTO((40-(ENTERO(A1/100)-20));4)=3;1;0)+RESTO((40-(ENTERO(A1/100)-20));4))-(RESTO((RESTO(A1;100) + ENTERO(RESTO(A1;100) / 4));7)));7)+1)[/PHP]

Con ella no hay cálculos que nos hagan "la Pascua" pues está probada hasta el año 4099, aunque no sé si será tragada vs tratada con la limitación del tamaño de los mensajes de este foro.

P.D.: Por cierto, los ministros de las iglesias implicadas están pensando fijar las fechas de Semana Santa para que a los gobiernos y a los colegios de estudiantes no les hagan "la Pascua" por los dichosos cambios anuales.

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.