giovedì 6 giugno 2013

Oggi è doomsday


(essenzialmente, un altro post ispirato dal geniale John Conway).

L'altra sera, commentando le performances di un astro nascente del mentalismo (nonché mio ex-allievo), il discorso è caduto sulla sua capacità di azzeccare quasi istantaneamente il giorno della settimana relativo ad una qualsiasi data. In effetti, la facoltà potrebbe sembrare quasi paranormale (e magari un po' lo è, vista la sua velocità nell'eseguire i calcoli, anche se forse il suo metodo si basa su una serie di date memorizzate in precenza), ma in realtà l'esercizio è alla portata di chiunque abbia un minimo di scioltezza nel calcolo mentale.
Il procedimento descritto da Conway negli anni '70 (ma ispirato da altri autori, ad esempio Lewis Carroll) si basa sull'osservazione che alcune date facili da memorizzare (l'ultimo giorno di febbraio, la sequenza 4.4/6.6/8.8/10.10/12.12, le coppie 5.9/9.5 e 7.11/11.7, il 3 gennaio negli anni comuni e il 4 gennaio nei bisestili) cadono sempre nello stesso giorno della settimana. Identificato tale giorno, che Conway battezza con il pittoresco nome di doomsday, non è quindi difficile situare nella settimana una data qualsiasi. Ad esempio, dal momento che il doomsday per l'anno 1971 cade di domenica (vedremo poi perché), procedendo a ritroso dall'8 agosto è facile affermare che il sottoscritto nacque di lunedì (2 agosto).
Il problema si riduce quindi alla determinazione del doomsday per un dato anno; osservando che le date corrispondenti avanzano di un giorno all'interno della settimana ogni anno comune (perché $365=52 \cdot 7+1$) e di due giorni ogni anno bisestile (perché $366=52 \cdot 7+2$) non è difficile convincersi del fatto che la formula
$$ y=\left( x + \left\lfloor \frac{x}{4} \right\rfloor \right) \bmod 7 $$ (dove $\lfloor n \rfloor$ è la parte intera di $n$, cioè la sua approssimazione per difetto, e $n \bmod 7$ è il resto della divisione $n:7$) rappresenta lo spostamento dei doomsdays all'interno della settimana dopo che sono trascorsi $x$ anni. Aggiungendo tale spostamento al doomsday del primo anno del secolo (che Conway chiama anchor day), con $x$ pari al numero di anni trascorsi all'interno del secolo è poi facile ricavare il doomsday per l'anno $x$. Ad esempio, per l'anno 1971 poniamo $x=71$ e calcoliamo $$ \left( 71 + \left\lfloor \frac{71}{4} \right\rfloor \right) \bmod 7 = \left( 71 + 17 \right) \bmod 7 = 88 \bmod 7 = 4 \;. $$ Per il XX secolo (1900-1999) l'anchor day è mercoledì; pertanto il doomsday 1971 cade di "mercoledì più quattro", cioè di domenica. Gli anchor days sono facilmente memorizzabili, ripetendosi ogni quattro secoli (dal momento che il calendario gregoriano ha un ciclo di 400 anni): partendo dal 1900, sono mercoledì-martedì-domenica-venerdì (in breve MeMaDoVe).
Calcoliamo, a mo' di esempio conclusivo, il giorno di nascita di un certo Leonhard Euler (15 aprile 1707): la parte intera di 7:4 è 1, aggiungendolo a 7 otteniamo 8, che diviso per 7 dà resto 1; l'anchor day per il '700 è domenica (MeMaDoVe partendo dal '500), quindi il doomsday 1707 cade di lunedì; il 4 aprile (4.4) è un doomsday, aggiungendo 11=7+4 giorni possiamo quindi affermare che Eulero nacque di venerdì.

2 commenti:

  1. Molto interessante, anche se i calcoli richiedono un po' di tempo (o più che altro un po' di allenamento).
    Grazie mille!

    Cordiali saluti,
    Nicolas Lanzetti

    RispondiElimina
  2. Ebbene io lo sapevo già a 7-8 anni e sono stato dal mago Zurlì al festival dei bambini prodigio nel 1961 al cinema Odeon di Messina Lo so ancora fare ma più lentamente ( è l'età)
    Non ho mai saputo nulla dell'algoritmo Doomsday fino a pochi giorni fa
    Per caso ne sono venuto a conoscenza
    Ho avuto una vita felice e appagante e ora ho quasi 70 anni
    Ho studiato tanto e ho avuto un ottimo lavoro

    RispondiElimina