Ahorita que estamos en épocas de pascua, me vino un recuerdo cuando alguien me pregunto si sabia como se calculaba el día de "easter".
Recordando que este día corresponde al primer domingo después de la primer luna llena después de verano.
En un Link menciona algunos algoritmos para este calculo. (por ejemplo mi amigo Java)
http://es.wikipedia.org/wiki/Cálculo_de_la_fecha_de_Pascua#Algoritmo_en_Java
import java.util.Date; import java.util.Calendar; public class Pascua { private static int M=24; private static int N=5; private int anno; /** Creates a new instance of Pascua */ public Pascua(int anno) { if (anno >= 1583 && anno <= 1699){ M = 22; N = 2; }else if ( anno >=1700 && anno <= 1799){ M = 23; N = 3; }else if ( anno >=1800 && anno <= 1899){ M = 23; N = 4; }else if ( anno >=1900 && anno <=2099){ M = 24; N = 5; }else if ( anno >=2100 && anno <=2199){ M= 24; N= 6; }else if ( anno>=2200 && anno <= 2299){ M= 25; N= 0; } this.anno = anno; } public Date getFechaPascua(){ int a,b,c,d,e,dia,mes; //Cálculo de residuos a = anno % 19; b = anno % 4; c = anno % 7; d = (19*a + M) % 30; e = (2*b+4*c+6*d + N) % 7; // Decidir entre los 2 casos: if (d+e < 10) { dia = d+e+22; mes = Calendar.MARCH; }else{ dia = d+e-9; mes = Calendar.APRIL; } // Excepciones especiales (según artículo) if (dia == 26 && mes == Calendar.APRIL) dia = 19; if (dia == 25 && mes == Calendar.APRIL && d==28 && e == 6 && a >10) dia = 18; Calendar fechaPascua = Calendar.getInstance(); fechaPascua.set(Calendar.DAY_OF_MONTH,dia); fechaPascua.set(Calendar.MONTH,mes); fechaPascua.set(Calendar.YEAR,this.anno); return fechaPascua.getTime(); } public static void main (String [] args){ Pascua pascua = new Pascua(2009); System.out.println(java.text.DateFormat.getDateInstance().format(pascua.getFechaPascua())); } }
Ahora veamos el código en Lenguaje W:Easter(2006) // returns "20060416"
Eso si si quieren hacer el algoritmo para que no quede duda, también se puede hacer ;), como dice un maestro nomas seria cuestión de ponerse creativo
No hay comentarios:
Publicar un comentario