Qualche giorno fa mi arriva questo sms, da un numero a me sconosciuto:

In Agosto 2010 ci sn 5
domeniche, 5 lunedì e 5
martedì. Ciò accade ogni
823 anni, il fengshui
cinese, dice ke se lo fai
presente 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.