Nota: versione aggiornata per gestire correttamente le date nel calendario giuliano
Mi sono imbattuto per caso in un algoritmo, ideato da John Conway, per il calcolo mentale del giorno della settimana relativo ad una certa data. Esso si basa sul fatto che in un qualsiasi anno alcune date, facili da ricordare, cadono sempre nello stesso giorno: ad esempio, l’ultimo giorno di febbraio e il 4/4, 6/6, 8/8, 10/10, 12/12, più alcune altre di cui parleremo più avanti. Questo giorno è chiamato “Doomsday” (“Il giorno del giudizio”).
Il primo passo consiste nel trovare un giorno di riferimento (anchor) in base al secolo, e da questo calcolare il Doomsday. L’anchor si trova in base alle corrispondenze:
- 1800-1899: venerdì
- 1900-1999: mercoledì
- 2000-2099: martedì
- 2100-2199: domenica
Il ciclo si ripete ogni 400 anni, per cui l’anchor per gli anni 1500-1599 sarà lo stesso degli anni 1900-1999, ossia mercoledì.
Se l’anno che ci interessa è il secolo (es. 1900), l’anchor coincide con il Doomsday. Altrimenti, c’è qualche altro passaggio da fare.
Trovato l’anchor, si considerano le ultime due cifre dell’anno dato e si sommano alla parte intera della loro divisione per 4: il risultato andrà poi diviso per 7; detto R il resto della divisione, si conteranno (in avanti) R giorni a partire dall’anchor per trovare il Doomsday.
Ora, basta ricordare che sul Doomsday cadono sempre le seguenti date:
- il 3 gennaio negli anni comuni, il 4 gennaio negli anni bisestili;
- l’ultimo giorno di febbraio (29 compreso)
- il 4 aprile
- il 9 maggio (9/5)
- il 6 giugno
- l’11 luglio (11/7)
- l’8 agosto
- il 5 settembre (5/9)
- il 10 ottobre
- il 7 novembre (7/11)
- il 12 dicembre.
Il che non è difficile da memorizzare se si pensa che nei mesi pari (escluso febbraio) abbiamo coppie di numeri uguali: 4/4, 6/6, ecc. Per gli altri mesi, basta ricordare 9/5 e 5/9, 11/7 e 7/11; l’ultimo giorno di febbraio (o, per estensione all’indietro, la pseudodata 0 Marzo); il 3 gennaio; il 4 gennaio per gli anni bisestili (divisibili appunto per 4).
Infine dal Doomsday si trova facilmente qualsiasi data.
Il calendario Giuliano
L’algoritmo vale per il calendario Gregoriano, introdotto venerdì 15 ottobre 1582. Per date precedenti, cioè riferite al calendario Giuliano, è necessario spostare in avanti il Doomsday di un numero di giorni variable a seconda del secolo in cui ci si trova.
È vero infatti che fra l’ultimo giorno del calendario giuliano (giovedì 4/10/1582; Doomsday = 10/10 = mercoledì) e il primo del calendario gregoriano (venerdì 15/10/1582, Doomsday = 10/10 = domenica) c’è una differenza di 10 giorni, che si risolve facendo avanzare il Doomsday di 10-7=3 giorni, ma andando a ritroso nel tempo questa differenza non è costante, per ridursi a 0 negli anni 200-300 d.C., a causa delle diverse ciclicità dei due calendari (il gregoriano si ripete ogni 400 anni, il giuliano ogni 700).
A partire da una tabella di conversione fra calendario giuliano e gregoriano prolettico, ho messo insieme questo elenco di anchor per il calendario giuliano:
- 800-899: sabato
- 900-999: venerdì
- 1000-1099: giovedì
- 1100-1199: mercoledì
- 1200-1299: martedì
- 1300-1399: lunedì
- 1400-1499: domenica
- 1500-1582: sabato (NB: valido solo fino al 4/10/1582)
Il calendario giuliano si ripete ogni 700 anni, quindi l’anchor per gli anni 700-799 sarà domenica, ecc.
Esempio 1
Vogliamo trovare in che giorno cadeva il 17 dicembre 1903, giorno del primo volo dell’apparecchio Flyer dei fratelli Wright.
Calcolo dell’anchor
Per gli anni 1900-1999 l’anchor è un mercoledì.
Calcolo del Doomsday
(3 + int(3/4) ) mod 7 = (3 + 0) mod 7 = 3
dove con int si è indicata la parte intera, con mod il resto della divisione. Sommiamo quindi 3 giorni a mercoledì, per ottenere sabato, il Doomsday per il 1903. Il Doomsday più vicino alla data che ci interessa è il 12 dicembre, che quindi cade di sabato.
Calcolo finale
Il 17 dicembre 1903 era pertanto un giovedì (fonte).
Esempio 2
Vogliamo trovare in che giorno cadeva il 12 ottobre 1492, giorno della scoperta dell’America. Qui andiamo sul difficile, con un’applicazione al calendario giuliano.
Calcolo dell’anchor
Per gli anni 1400-1499 l’anchor (con la correzione per il calendario giuliano) è una domenica.
Calcolo del Doomsday
(92 + int(92/4) ) mod 7 = 115 mod 7 = 3
Sommiamo quindi 3 giorni a domenica, per ottenere mercoledì, il nostro Doomsday per il 1492 nel calendario giuliano. Il Doomsday più vicino alla data da calcolare è il 10 ottobre.
Calcolo finale
Dato che il 10 ottobre 1492 cadeva di mercoledì, il 12 ottobre era pertanto un venerdì.
(Un grazie a Carlo per avermi fatto riflettere sulle discrepanze fra calendari, cosa che mi ha spinto a migliorare la correzione per il calendario Giuliano)
Lascia un commento