Una volta ogni 823 anni, sbufalata con Python
Qualche giorno fa mi arriva questo sms, da un numero a me sconosciuto:
In Agosto 2010 ci sn 5domeniche, 5 lunedì e 5martedì. Ciò accade ogni823 anni, il fengshuicinese, dice ke se lo faipresente a 8 persone,avrai molti soldi.
Non so voi, ma a me queste catene smuovono il sistema nervoso: chi è il deficiente che perde tempo a far perder tempo altra gente? A mandare questi sms si fa la fortuna e i soldi solo delle compagnie telefoniche, mi pare evidente. Il mio cervello ha etichettato il pensiero come spam e l’ho archiviato.Tuttavia durante la giornata ho ripensato a questo messaggio, chiedendomi se fosse vero che questa combinazione non succede da 823 anni.
E’ possibile? A occhio e croce mi sembrava una bufala, e non avevo torto: volevo la prova scientifica.
Avrei potuto scorrere una qualsiasi applicazione di calendario alla ricerca di questi agosto portafortuna, ma sarebbe stata un lavoro inutile, così la risposta mi si è palesata in breve. Uno script Python, no?
from datetime import datetime, timedelta risultato = [] anno = 2010 mese = 8 ungiorno = timedelta(days=1) while anno != 2010 - 823: dom = lun = mar = 0 giorno = datetime(anno, mese, 1) while giorno.month == 8: if giorno.weekday() == 6: # domenica dom += 1 elif giorno.weekday() == 0: # lunedi lun += 1 elif giorno.weekday() == 1: # martedi mar += 1 giorno = giorno + ungiorno if dom == lun == mar == 5: risultato.append(giorno.year) anno = anno - 1 print risultato, len(risultato)
Il risultato è che tra il 2010 e 823 anni fa, un agosto così si è già visto 116 volte. L’ultima volta? Nel 2004.
Falso! Nell’agosto 2004 ci sono state 5 domeniche, 5 lunedì e 5 martedì. Negli ultimi 823 anni è successo 116 volte. Piantala con questi sms idioti.
Sono stato cattivo? Troppo cattivo? Scrivete uno script Python per dimostrarlo.
settembre 8th, 2010 at 00:21
Anche io ho trovato questa bufala abbastanza evidente, ma mi interessava sapere di preciso quante volte fosse capitato questo evento negli ultimi 823 anni.
Grazie, mi hai risparmiato una serie di calcoli!
ottobre 27th, 2010 at 22:20
Ne sta girando una nuova versione che parla di ottobre; ho provato a modificare il programma cambiando le righe 5, 11, 12, 14, 16 e ottengo anche qui 116.
Una verifica a campione comunque riserva delle sorprese: ottobre 1543 non ha 5 ven-sab-dom. Errori di programmazione a parte (python lo scrivo per emulazione
mi viene il dubbio che il calendario gregoriano e python non vadano d’accordo per gli anni precedenti al 1582 ^^; (vedi: http://astro.liceofoscarini.it/calendarmese.phtml?JD=2284938 )
ottobre 27th, 2010 at 22:46
Ciao Andrea! Hai ragione, il calendario usato da Python è un calendario ideale perpetuo, cioè un calendario gregoriano che si estende infinitamente all’avanti e all’indietro, ma che non tiene conto di cambiamenti storici.
http://docs.python.org/library/calendar.html
giugno 30th, 2011 at 13:03
Non ci voleva python per dirlo
Se un certo giorno di un anno è domenica, lo stesso giorno dell’anno dopo è lunedi
(365 giorni sono 52 settimane + un giorno).
Quindi la catena si dovrebbe ripetere ogni 7 anni, se non considerassimo i bisestili (366 giorni = 52 settimane + 2 giorni). Considerandoli accade ogni 6 anni..
Prima del 1582 mi sembra che i bisestili non esistevano.
luglio 12th, 2011 at 15:23
noooooo !!!
Delusione!
Ho mandato la mail a 8 gruppi di 8 persone sperando che il Jin Seng mi facesse trovare molti soldi !
Vabbè, non avrò i soldi ma sarò protetto dai prossimi 823 tutankamon.
ottobre 14th, 2011 at 19:09
bhe ci posso riprovare tra 823 anni ho detto una cazzata tanto per dire