Oggi è pasqua e quale regalo migliore avrei potuto fare agli amici programmatori se non spiegare un algoritmo con il quale calcolare la tanto misteriosa data bellerina?
Di anno in anno, infatti, la data di questa festività è sempre un mistero ed è difficile conoscere qualcuno che sappia con largo anticipo quale sarà la domenica incriminata. Oggi vi vengo in aiuto e vedremo insieme un vecchio algoritmo che serve ad ovviare a tale mancanza.
Il codice che prenderemo in esame si rifà ad un algoritmo ideato dal matematico,fisico e astronomo Carl Friedrich Gauss. Il listato che presenterò sara uno pseudo-codice così da far in modo che ognuno possa convertirlo con facilità nel proprio linguaggio preferito.
Prima di addentrarci nel vivo della programmazione bisogna fissare i seguenti punti:
- Con MOD sarà indicata quell’operazione matematica che restituisce il resto di una divisione. Ad esempio 15 MOD 2 = 1 poichè 15:2 = 7 con resto 1;
- Tutti i valori trattati sono interi;
- I mesi nei quali è possibile che ricada la data cercata sono Marzo e Aprile;
- Con Y si indica l’anno di cui si vuole calcolare la data di Pasqua.
Bene!Detto ciò, iniziamo…
Si calcolano prima i tre valori A, B e C nel seguente modo:
A = Y MOD 19
B = Y MOD 4
C = Y MOD 7
Fatto ciò si passa i valori D ed E:
D = (19 * A + M) MOD 30
E = (2 * B + 4* C + 6 * D + N) MOD 7
Come si vede nelle formule scritte sopra, appaiono due valori che non conosciamo: M ed N. Tali valori sono delle semplici costanti intere che devono essere prelevate dal seguente schema in base all’anno Y in questione:
| Anni | M | N |
|---|---|---|
| 1583-1699 | 22 | 2 |
| 1700-1799 | 23 | 3 |
| 1800-1899 | 23 | 4 |
| 1900-2099 | 24 | 5 |
| 2100-2199 | 24 | 6 |
| 2200-2299 | 25 | 0 |
| 2300-2399 | 26 | 1 |
| 2400-2499 | 25 | 1 |
Una volta eseguiti i calcoli di D ed E si analizza la loro somma. Se
(D + E)
allora la Pasqua cade il giorno
(D + E + 22)
del mese di Marzo, altrimenti essa cade il giorno
(D + E – 9)
del mese di Aprile.
Vediamo ora il listato completo in pseudo-codice
