Calendar perpetuu

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Calendar perpetuu (secolul al XVII-lea, Museo Galileo din Florența).

Calendarul perpetuu este o metodă care vă permite să obțineți ziua săptămânii ( luni , marți , miercuri , joi , vineri , sâmbătă , duminică ) a oricărei date calendaristice .

Sub forma unui algoritm , unul dintre cele mai simple este algoritmul creat de F. Berio [1] constând în adăugarea a 5 termeni, folosirea operației modulo pentru a reduce rezultatul sumei la o valoare mai mică de 7. Această operație (indicat de simbolul "mod") este analog aritmeticii ceasului (conform căruia de exemplu orele 15 corespund orelor 3 din 15 mod 12 = 3) și constă din restul diviziunii (deci 18 mod 7 = 4 din 18/7 = 2 și restul diviziunii este 4; sau, echivalent, din moment ce eliminarea 7 de două ori din 18, restul este 4).

Algoritmul

calendar gregorian

Luând un anumit dd / mm / ssay , componentele sale sunt descrise în următorul tabel:

Numarul corespunde la cu limitări
zile ziua lunii de la 1 la 31
mm luna anului 1 la 12
ss primele două cifre ale anului [int (anul / 100)] de la 15 încoace
aa ultimele două cifre ale anului (anul mod 100) de la 0 la 99

Algoritmul constă în determinarea a cinci adunări G, M, S, A, B și în calcularea [(G + M + S + A + B) mod 7]; operația modulo poate fi efectuată nu numai după adăugarea celor cinci completări, ci și, opțional, la orice addendum sau sumă parțială.

Ziua lunii (modulul 7) oferă primul addendum G al expresiei finale:

  • G = dd mod 7

Al doilea addendum M este un cod derivat din lună, furnizat de următorul tabel:

Lună M (fără an bisect ) M (an bisect )
ianuarie 6 5
februarie 2 1
Martie 2
Aprilie 5
Mai 0
iunie 3
iulie 5
August 1
Septembrie 4
octombrie 6
noiembrie 2
decembrie 4

Al treilea addendum S este un cod derivat din secol, adică din primele două cifre ss ale anului: la cele 4 rezultate posibile ale „ ss mod 4” se asociază un număr S astfel încât:

ss mod 4 0 1 2 3
S. 0 5 3 1

și, prin urmare, pentru primele secole în valabilitatea calendarului gregorian, rezultă:

ss 15 16 17 18 19 20 21 22 23
S. 1 0 5 3 1 0 5 3 1

În realitate, șapte combinații diferite de valori ar putea fi atribuite celui de al doilea și al treilea sumand: combinația de valori prezentată aici pentru M și S este cea optimizată pentru secolul actual, deoarece pentru ss = 20 avem S = 0 .

Al patrulea adaos A se obține din ultimele două cifre aa ale anului; întrucât, în același secol, zilele săptămânii se repetă în calendarul gregorian la fiecare 28 de ani, considerăm:

  • A = aa mod 28

Al cincilea adaos B se obține începând cu ultimele două cifre aa ale anului și reprezintă numărul de ani bisecți care sunt cu siguranță conținuți în aa ani ( int indică funcția întreagă parte a numărului):

  • B = int [( aa mod 28) / 4]

De exemplu, pentru 2023, rezultatul operației este de 5, deoarece 23 conține 5 blocuri întregi de câte 4 ani fiecare; aritmetic:

B = int [(23 mod 28) / 4] = int (23/4) = 5

După determinarea celor cinci adaosuri, calculăm:

  • [(G + M + S + A + B) mod 7]

Formula oferă un număr între 0 și 6 care va indica ziua săptămânii:

Rezultat Zi
0 duminică
1 luni
2 marţi
3 miercuri
4 joi
5 vineri
6 sâmbătă

Zilele anterioare vineri, 15 octombrie 1582 , data intrării în vigoare a calendarului gregorian , nu pot fi calculate cu tabelele S prezentate mai sus, deoarece calendarul iulian era în vigoare. Algoritmul va rămâne valabil până la orice introducere viitoare de corecții în calendarul gregorian .

Calendarul iulian

Pentru zilele calendarului iulian care merg din anul 1 d.Hr. până joi, 4 octombrie 1582 , ultima zi în care acest calendar a rămas în vigoare, se poate utiliza un algoritm similar cu cel anterior pentru a cunoaște ziua corespunzătoare a săptămânii.

Formatul de dată, dd / mm / ssay , rămâne valabil, ale cărui componente sunt descrise în acest tabel similar:

Numarul corespunde la cu limitări
zile ziua lunii de la 1 la 31
mm luna anului 1 la 12
ss primele două cifre ale anului [int (anul / 100)] De la 0 la 15
aa ultimele două cifre ale anului (anul mod 100) de la 0 la 99

Algoritmul constă încă în determinarea celor cinci adunări G, M, S, A, B și în calcularea [(G + M + S + A + B) mod 7].

Ziua lunii (modulul 7) oferă primul addendum G al expresiei finale:

  • G = dd mod 7

Al doilea addendum M este codul derivat din lună, în acest caz furnizat de următorul tabel:

Lună M (fără an bisect ) M (an bisect )
ianuarie 5 4
februarie 1 0
Martie 1
Aprilie 4
Mai 6
iunie 2
iulie 4
August 0
Septembrie 3
octombrie 5
noiembrie 1
decembrie 3

Al treilea addendum S este codul derivat din secol, adică din primele două cifre ss ale anului. Pentru determinarea acestui număr S , se constată diferența principală față de calendarul gregorian . Valoarea sa se calculează pornind de la formula:

  • S = 6 - ( ss mod 7)

și, prin urmare, pentru secolele calendarului iulian în care acest algoritm este valid, obținem:

ss 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
S. 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5

Codul S asociat cu secolul este determinat într-un mod diferit, deoarece în calendarul iulian au fost considerați ani bisecti chiar și multiplii de 100 și nu multiplii de 400. Din acest motiv, fiecare secol include 25 de ani bisecți și asta înseamnă că, dintr-un secol la cealaltă, numerotarea se deplasează înapoi cu o unitate.

Al patrulea addendum A este obținut din ultimele două cifre aa ale anului, ca în algoritmul anterior; obținem astfel:

  • A = aa mod 28

Al cincilea adaos B se obține, de asemenea, ca în algoritmul anterior, începând cu ultimele două cifre aa ale anului:

  • B = int [( aa mod 28) / 4]

După determinarea celor cinci adaosuri, calculăm:

  • [(G + M + S + A + B) mod 7]

Formula oferă un număr între 0 și 6 care va indica ziua săptămânii:

Rezultat Zi
0 duminică
1 luni
2 marţi
3 miercuri
4 joi
5 vineri
6 sâmbătă


Exemple

Calendarul iulian

Data: 1 ianuarie 1 d.Hr. ( 01/01/0001 )

  • G = 1 ( dd = 01, 1 mod 7 = 1)
  • M = 5 (ianuarie)
  • S = 6 ( ss = 00, 6 - (0 mod 7) = 6 - 0 = 6)
  • A = 1 ( aa = 01, 1 mod 28 = 1)
  • B = 0 (int [(1 mod 28) / 4] = int (1/4) = 0)
  • G + M + S + A + B = 1 + 5 + 6 + 1 + 0 = 13
  • 13 mod 7 = 6
  • 1 ianuarie 1 d.Hr. a fost sâmbătă

Data: 29 februarie 700 ( 29/02/0700 )

  • G = 1 ( dd = 29, 1 mod 7 = 1)
  • M = 0 (februarie, salt)
  • S = 6 ( ss = 07, 6 - (7 mod 7) = 6 - 0 = 6)
  • A = 0 ( aa = 00, 0 mod 28 = 0)
  • B = 0 (int [(0 mod 28) / 4] = int (0/4) = 0)
  • G + M + S + A + B = 1 + 0 + 6 + 0 + 0 = 7
  • 7 mod 7 = 0
  • 29 februarie 700 a fost duminică

Data: 1 iulie 1114 ( 01/07/1114 )

  • G = 1 ( dd = 01, 1 mod 7 = 1)
  • M = 4 (iulie)
  • S = 2 ( ss = 11, 6 - (11 mod 7) = 6 - 4 = 2)
  • A = 14 ( aa = 14, 14 mod 28 = 14)
  • B = 3 (int [(14 mod 28) / 4] = int (14/4) = 3)
  • G + M + S + A + B = 1 + 4 + 2 + 14 + 3 = 24
  • 24 mod 7 = 3
  • 1 iulie 1114 a fost miercuri

Data: 4 octombrie 1582 ( 04/10/1582 )

  • G = 4 ( dd = 04, 4 mod 7 = 4)
  • M = 5 (octombrie)
  • S = 5 ( ss = 15, 6 - (15 mod 7) = 6 - 1 = 5)
  • A = 26 ( aa = 82, 82 mod 28 = 26)
  • B = 6 (int [(82 mod 28) / 4] = int (26/4) = 6)
  • G + M + S + A + B = 4 + 5 + 5 + 26 + 6 = 46
  • 46 mod 7 = 4
  • 4 octombrie 1582 a fost joi (ultima zi de valabilitate a calendarului iulian)

calendar gregorian

Data: 15 octombrie 1582 ( 15/10/1582 )

  • G = 1 ( dd = 15, 15 mod 7 = 1)
  • M = 6 (octombrie)
  • S = 1 ( ss = 15, 15 mod 4 = 3)
  • A = 26 ( aa = 82, 82 mod 28 = 26)
  • B = 6 (int [(82 mod 28) / 4] = int (26/4) = 6)
  • G + M + S + A + B = 1 + 6 + 1 + 26 + 6 = 40
  • 40 mod 7 = 5
  • 15 octombrie 1582 a fost vineri (prima zi de valabilitate a calendarului gregorian)

Data: 25 februarie 1800 ( 25.02.1800 )

  • G = 4 ( zile = 25, 25 mod 7 = 4)
  • M = 2 (februarie)
  • S = 3 ( ss = 18, 18 mod 4 = 2)
  • A = 0 ( aa = 00, 0 mod 28 = 0)
  • B = 0 (int [(0 mod 28) / 4] = int (0/4) = 0)
  • G + M + S + A + B = 4 + 2 + 3 + 0 + 0 = 9
  • 9 mod 7 = 2
  • 25 februarie 1800 a fost marți

Data: 22 octombrie 2008 ( 22/10/2008 )

  • G = 1 ( zile = 22, 22 mod 7 = 1)
  • M = 6 (octombrie)
  • S = 0 ( ss = 20, 20 mod 4 = 0)
  • A = 8 ( aa = 08, 8 mod 28 = 8)
  • B = 2 (int [(8 mod 28) / 4] = int (8/4) = 2)
  • G + M + S + A + B = 1 + 6 + 0 + 8 + 2 = 17
  • 17 mod 7 = 3
  • 22 octombrie 2008 a fost miercuri

Data: 15 aprilie 2097 ( 15.04.2097 )

  • G = 1 ( dd = 15, 15 mod 7 = 1)
  • M = 5 (aprilie)
  • S = 0 ( ss = 20, 20 mod 4 = 0)
  • A = 13 ( aa = 97, 97 mod 28 = 13)
  • B = 3 (int [(97 mod 28) / 4] = int (13/4) = 3)
  • G + M + S + A + B = 1 + 5 + 0 + 13 + 3 = 22
  • 22 mod 7 = 1
  • 15 aprilie 2097 va fi luni

Criterii pentru calculul mnemonic

Pentru a efectua calculul eficient din punct de vedere mental, este recomandabil să păstrați mai întâi tabelul care oferă suplimentul M într-o formă de auto-referință. O metodă este de a memora numele lunilor trunchiate la un număr de caractere care coincid cu codul M (pentru a nu confunda codurile 5 și 6, este recomandabil să împărțiți abrevierile cu 6 caractere în două părți):

Lună M (fără an bisect ) M (an bisect )
ianuarie GEN NAI GEN NAI -1
februarie FE FE -1
Martie DAR
Aprilie APRILIE
Mai .
iunie DE MAI JOS
iulie IULIE
August LA
Septembrie SĂPTĂMÂNĂ
octombrie OCT OBR
noiembrie NU
decembrie EL SPUNE

În al doilea rând, trebuie luat în considerare faptul că suma S + A + B (contribuția datorată pe an) nu variază pentru un an întreg; prin urmare, cel puțin pentru anul în curs, memorează-l doar la începutul anului.

În al treilea rând, ar trebui considerat că într-un anumit secol ( ss constant) calendarul se repetă la fiecare 28 de ani (deoarece 28 este cel mai mic multiplu comun de 7 și 4, în care 7 este periodicitatea cu care se repetă zilele săptămânii și 4 cel cu care se repetă anii bisecți), deci dacă anul este mai mare sau egal cu 28, ia în considerare anul obținut scăzând 28 sau un multiplu al acestuia (56 sau 84) ca fiind anul.

În plus, trebuie luat în considerare faptul că, de îndată ce un addendum sau o sumă parțială este mai mare sau egală cu 7, este adecvat să se scadă imediat 7 sau multiplii săi pentru a minimiza valorile implicate. În special, valoarea 7 este echivalentă cu 0.

În cele din urmă, este necesar să se cunoască regula care, în calendarul gregorian, stabilește ce ani sunt ani bisecți : dacă aa este diferit de 0, anul este un an bisect dacă aa este divizibil cu 4; dacă aa este egal cu 0 (ani seculari), anul este un an bisect dacă ss este divizibil cu 4.

Operațiile care trebuie efectuate mental (rapide, în ciuda complexității aparente) sunt, prin urmare:

  • ia în considerare numărul zilei; dacă este mai mare sau egal cu 7, scade imediat cel mai mare multiplu posibil de 7;
  • adăugați codul lunii furnizat într-un mod de auto-referință cu numele lunii; dacă este ianuarie sau februarie și anul este bisect, trebuie scăzut 1 (conform tabelului codului M); dacă suma atinge sau depășește 7, scade imediat 7;
  • adăugați codul secolului: pentru secolul actual ( ss = 20) codul este 0 (conform tabelului codului S); pentru secolul trecut ( ss = 19) codul este 1; dacă suma atinge sau depășește 7, scade imediat 7;
  • ia în considerare anul: dacă este mai mare sau egal cu 28, consideră anul obținut prin scăderea lui 28 sau a unui multiplu al acestuia (56 sau 84) ca aa ;
  • adăugați anul aa , posibil redus cu un multiplu de 7;
  • adăugați numărul de ani bisecți care sunt cu siguranță conținuți în aa : dacă aa nu atinge 4 (este mai mic de 4) considerați 0 salt, altfel dacă nu ajunge la 8 luați în considerare 1 salt, altfel dacă nu ajunge la 12 luați în considerare 2 salt, etc; dacă suma atinge sau depășește 7, scade 7;
  • numărul obținut indică ziua săptămânii: 1 = luni, 2 = marți, ..., 6 = sâmbătă, 0 (echivalent cu 7) = duminică.

Exemplele ilustrează modul de procedare operațională pentru efectuarea calculului.

Exemple de calcul mnemonic

Această secțiune ilustrează exemple de calcul al expresiei ( G + M + S + A + B ) mod 7 într-un mod optimizat pentru a fi efectuat mental.

01/01/2003 : gândindu-ne la data ca 1 " GEN NAI " 20 03 , este necesar să adăugați 1 (ziua) + 6 ("GEN NAI"); până acum se obține 7: 7 se scade imediat și rămâne 0; continuați adăugând 0 (pentru secolul actual) + 3 (an) + 0 (numărul de salturi în 3 ani) = 3, deci miercuri .

01/01/2000 : gândindu-ne la data ca 1 " GEN NAI " 20 00 , trebuie să adăugați 1 (ziua) + 5 ("GEN NAI" -1, adică 6-1 deoarece 2000 a fost un salt) + 0 (pentru secolul actual) + 0 (an) + 0 (numărul de salturi în 0 ani) = 6, deci sâmbătă .

01/01/2004 : gândind data ca 1 " GEN NAI " 20 04 , trebuie să adăugați 1 (ziua) + 5 ("GEN NAI" -1 deoarece 2004 a fost un salt) + 0 (pentru secolul actual ) + 4 (an); până acum obținem 10: scădem imediat 7 și rămânem 3; continuați adăugând 1 (numărul de salturi în 4 ani) = 4, deci joi .

01/03/2000 : gândind data ca 1 " TU " 20 00 , trebuie să adăugați 1 (ziua) + 2 ("MA") + 0 (pentru secolul curent) + 0 (an) + 0 ( numărul de leapers în 0 ani) = 3, deci miercuri .

08/03/2000 : gândindu-ne la data ca 8 " TU " 20 00 , considerăm 8 (ziua); 7 poate fi imediat scăzut și 1 rămâne; continuați adăugând 2 („MA”) + 0 (pentru secolul actual) + 0 (an) + 0 (numărul de salturi în 0 ani) = 3, apoi miercuri .

25/12/2000 : gândindu-ne la data ca 25 " SPUNE " 20 00 , considerăm 25 (ziua); puteți scădea imediat 21 (multiplu de 7) și rămâne 4 ; continuați adăugând 4 („DICE”), obținând 8; 7 poate fi imediat scăzut și 1 rămâne; continuați adăugând 0 (pentru secolul curent) + 0 (an) + 0 (numărul de salturi în 0 ani) = 1, apoi luni .

01/10/2003 : gândindu-ne la data ca 1 " OCT OBR " 20 03 , considerăm 1 (ziua) + 6 ("OTT OBR"), obținând 7; poți scădea imediat 7 și rămâne 0; continuați adăugând 0 (pentru secolul actual) + 3 (an) + 0 (numărul de salturi în 3 ani) = 3, deci miercuri .

01/10/2004 : gândindu-ne la data ca 1 " OCT OBR " 20 04 , considerăm 1 (ziua) + 6 ("OCT OBR"), obținând 7; poți scădea imediat 7 și rămâne 0; continuați adăugând 0 (pentru secolul actual) + 4 (an) + 1 (numărul de salturi în 4 ani) = 5, deci vineri .

01/10/2005 : gândindu-ne la data ca 1 " OCT OBR " 20 05 , considerăm 1 (ziua) + 6 ("OCT OBR"), obținând 7; poți scădea imediat 7 și rămâne 0; continuați adăugând 0 (pentru secolul actual) + 5 (an) + 1 (numărul de salturi în 5 ani) = 6, deci sâmbătă .

19/03/2007 : gândindu-ne la data ca 19 " TU " 20 07 , considerăm 19 (ziua); puteți scădea imediat 14 (multiplu de 7) și rămâne 5 ; continuați adăugând 2 („MA”), obținând 7; poți scădea imediat 7 și rămâne 0; continuați adăugând 0 (pentru secolul actual) + 0 (anul = 7, dar puteți scădea imediat 7) + 1 (numărul de salturi în 7 ani) = 1, deci luni .

19/03/2008 : gândindu-ne la data ca 19 " TU " 20 08 , considerăm 19 (ziua); puteți scădea imediat 14 (multiplu de 7) și rămâne 5 ; continuați adăugând 2 („MA”), obținând 7; poți scădea imediat 7 și rămâne 0; continuați adăugând 0 (pentru secolul actual) + 1 (anul = 8, dar puteți scădea imediat 7) + 2 (numărul de salturi în 8 ani) = 3, deci miercuri .

19/03/2036 : gândindu-ne la data ca 19 " TU " 20 36 , considerăm 19 (ziua); puteți scădea imediat 14 (multiplu de 7) și rămâne 5 ; continuați adăugând 2 („MA”), obținând 7; poți scădea imediat 7 și rămâne 0; continuați adăugând 0 (pentru secolul actual); fiind anul mai mare sau egal cu 28, scădem 28 și rămânem 8 (deoarece calendarul din 2036 coincide cu cel din 20 08 ), de aceea considerăm valoarea 8 pentru anul; prin urmare, continuați adăugând 1 (anul = 8, dar puteți scădea imediat 7) + 2 (numărul de salturi în 8 ani) = 3, deci miercuri .

19/03/1936 : gândindu-ne la data ca 19 " TU " 19 36 , considerăm 19 (ziua); puteți scădea imediat 14 (multiplu de 7) și rămâne 5 ; continuați adăugând 2 („MA”), obținând 7; poți scădea imediat 7 și rămâne 0; continuați adăugând 1 (pentru secolul trecut); fiind anul mai mare sau egal cu 28, scădem 28 și rămânem 8 (deoarece calendarul din 1936 coincide cu cel din 19 08 ), de aceea considerăm valoarea 8 pentru anul; prin urmare, continuați adăugând 1 (anul = 8, dar puteți scădea imediat 7) + 2 (numărul de salturi în 8 ani) = 4, apoi joi .

31/12/1999 : considerând data ca 31DICE19 99 , considerăm 31 (ziua); puteți scădea imediat 28 (multiplu de 7) și rămâne 3 ; continuați adăugând 4 („DICE”), obținând 7; poți scădea imediat 7 și rămâne 0; continuați adăugând 1 (pentru secolul trecut); fiind anul mai mare sau egal cu 28, se scade un multiplu de 28 (56 sau 84, în acest caz 84) și rămâne 15 (deoarece calendarul din 1999 coincide cu cel din 19 15 ), de aceea este luat în considerare pentru anul valoarea 15; prin urmare, continuăm adăugând 1 (anul = 15, dar putem scădea imediat 14, care este multiplu de 7) + 3 (numărul de salturi în 15 ani) = 5, deci vineri . (Rețineți că a doua zi, 01/01/2000 , a fost sâmbătă ).

01/01/2100 : gândindu-ne la data ca 1 " GEN NAI " 21 00 , este necesar să adăugați 1 (ziua) + 6 ("GEN NAI", adică 6 deoarece 2100 nu va fi un salt); până acum se obține 7: 7 se scade imediat și rămâne 0; continuați adăugând 5 (pentru secolul următor) + 0 (an) + 0 (numărul de salturi în 0 ani) = 5, deci vineri .

Calendare perpetue istorice

Un calendar perpetuu a fost construit în 1741-1741 pentru regele francez Ludovic al XV-lea . Compus din patru panouri din bronz aurit cu mercur, are piese mobile din smalț alb care poartă curmale. Fiecare panou are o copie cu însemnele regale și cu această inscripțieː «Almanch perpétuel et toujours nouveau dédié au Roi». Pe laturile inscripției se află soarele și luna pictate în aur. Fiecare panou este împărțit vertical în trei părți, una pentru fiecare lună a trimestrului. Fiecare parte este împărțită pe rând în trei coloane, echipate cu blocuri glisante glazurateː în prima coloană sunt zilele săptămânii și fazele lunii; în a doua coloană apare data în numere; în a treia coloană sunt sărbătorile, împreună cu semnul zodiacal emailat și colorat și numele lunii în alb și negru. Mutarea plăcilor vă permite să ajustați datele în fiecare an. [2]

Notă

  1. ^ Treccani , pe treccani.it .
  2. ^ Dicționar de antichități majore și minore , Roma, Gremese, 2002, SBN IT \ ICCU \ TO0 \ 1149444 . Sub îndrumarea lui Jean Bedel; Ediție italiană editată de Alcide Giallonardi.

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității Tesauro BNCF 31403 · LCCN (EN) sh85018842 · GND (DE) 4198916-8 · BNF (FR) cb156191236 (data)