Calendario perpetuo: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
wikificata |
|||
Riga 1:
Il '''calendario perpetuo''' è un [[algoritmo]] che permette di ricavare il [[giorno]] della [[settimana]] (''[[lunedì]], [[martedì]], [[mercoledì]], [[giovedì]], [[venerdì]], [[sabato]], [[domenica]]'') di un giorno qualsiasi, conoscendone solo la [[data]]. Nel corso dell'algoritmo si farà spesso uso dell'operazione di [[modulo]] indicata dal simbolo "mod" che altro non è che il resto della divisione (ad esempio: 18mod7=4 infatti 18/7=2 e il resto della divisione è 4).
==
Presa una data del tipo ''gg/mm/ssaa'', chiamo:
{| border=1 cellspacing=0
| Il [[numero]] || corrisponde a || con le limitazioni
|-
| g || giorno del [[mese]] || da 1 a 31
|-
| a || ultime due [[cifra|cifre]] dell'[[anno]] (anno mod100) || da 0 a 99
|-
| s || le cifre del [[secolo]] (il risultato intero di anno/100)||nessuna
|}
Il giorno del mese modulo sette dà il primo addendo (G) della somma finale:
*G=g mod7
Il secondo addendo (M) è dato dalla seguente tabella:
{| border=1 cellspacing=0
|Mese||corrispondente numero M || se l'anno è [[bisestile]]
|-
|[[Gennaio]]||0||
|-
|[[Febbraio]]||3||
|-
|[[Marzo]]||3||+1
|-
|[[Aprile]]||6||+1
|-
|[[Maggio]]||1||+1
|-
|[[Giugno]]||4||+1
|-
|[[Luglio]]||6||+1
|-
|[[Agosto]]||2||+1
|-
|[[Settembre]]||5||+1
|-
|[[Ottobre]]||0||+1
|-
|[[Novembre]]||3||+1
|-
|[[Dicembre]]||5||+1
|}
Il terzo addendo (A) si ricava dall'anno:
*A=aa mod28 + parte intera di ((aa mod28 -1)/4)
Ad esempio, per il 2008, il risultato dell'operazione sarà:
*A= 8 mod28 + (parte intera di (8 mod28 - 1)/4))= 8 + (parte intera di (7/4)) = 8 + 1 = 9
Il quarto addendo (C) deriva dal secolo: ai 4 possibili risultati di (ss mod4), si associa un numero C
{| border=1 cellspacing=0
! ss mod4 =
|0||1||2||3
|-
! C =
|6||4||2||0
|}
Infine (G+M+A+C)mod7 dà un numero compreso tra 0 e 6 che indicherà il giorno della settimana (0=Domenica, 1=Lunedì... 6=Sabato)
==Esempi==
Data: 15/04/2097
*G =
*M = 6 (Aprile,
*A =
*
*G+M+A+C = 1+6+16+6 = 29
*29mod7 = 1
*il 15 Aprile 2097 sarà un Lunedì
Data: 22/10/2008
*G = 22mod7 = 1
*M = 0 (Ottobre, però l'anno è bisestile, quindi +1)= 1
*A = 8mod28 + intero di (8mod28 -1)/4 = 8 + intero di 7/4 = 8 + 1 = 9
*C = 6 (s=20, 20mod4=0)
*G+M+A+C = 1+1+9+6 = 17
*17mod7 = 3
*il 22 Ottobre 2008 sarà un Mercoledì.
[[bg:Целогодишни календари]]
|