Algoritmus na výpočet dňa v týždni

z Wikipédie, slobodnej encyklopédie
Prejsť na: navigácia, hľadanie

V tomto článku je opísaný algoritmus na výpočet dňa v týždni pre ľubovoľný dátum.

mod a div[upraviť | upraviť zdroj]

a mod b (a modulo b) označuje zvyšok, ktorý zostane, keď a delíme b. Pre výpočet dňa v týždni je dôležitý zvyšok modulo 7. Napríklad: 17 mod 7 = 3, lebo 17 / 7 je 2, zvyšok 3 Celočíselný výsledok delenia (v hornom príklade 2) sa označuje a div b. Pre výpočet dňa v týždni je potrebné div 4. Napríklad: 17 div 4 = 4

Výpočet[upraviť | upraviť zdroj]

Pre výpočet je potrebných nasledujúcich päť cifier:

Cifra dňa[upraviť | upraviť zdroj]

Cifra dňa je deň v mesiaci mod 7.

Cifra mesiaca[upraviť | upraviť zdroj]

Cifra mesiaca (ktorú si treba zapamätať): Január = 0, Február = 3, Marec = 3, Apríl = 6, Máj = 1, Jún = 4, Júl = 6, August = 2, September = 5, Október = 0, November = 3 a December = 5.

Január je nula. Ďalšie cifry sa dajú dopočítať zvyškom predchádzajúceho mesiaca mod 7:

Január má 31 dní a 31 mod 7 = 3, teda Február = 3 + 0 = 3. Február má 28 dní a 28 mod 7 = 0 a pre Marec túto 0 pripočítame ku 3 Februára a ako výsledok dostaneme opäť 3. Marec má 31 dní, 31 mod 7 = 3 a 3 + 3 = 6, teda Apríl = 6. Apríl má 30 dní, 30 mod 7 = 2, 6 + 2 = 8 a 8 mod 7 = 1, teda Máj = 1 atď.

Zabudnuté čísla sa teda dajú dopočítať.

Cifra roku[upraviť | upraviť zdroj]

Zoberieme posledné dve cifry roku. Ku tomuto číslu pripočítame celočíselný výsledok delenia tohto čísla štyrmi. Určíme tento súčet modulo 7. Ak je rok ABCD, vypočítame teda:

(CD + (CD div 4)) mod 7.

Napr.:

Rok: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Cifra: 0 1 2 3 5 6 0 1 3 4 5 6 1 2 3 4 6 0 1 2 4 5 6 0 2 3 4 5 0

Ako vidíme, počíta sa stále o 1 ďalej, v priestupných rokoch o 2, po 6 sa pokracuje znova s 0. Tento cyklus sa opakuje každých 28 rokov, rok 1928 bol (keď sa dívame na dni v týždni) teda taký istý ako rok 1956 a rok 1984.

Cifra storočia[upraviť | upraviť zdroj]

Cifra storočia sa vypočíta formulkou : (AB mod 4 - 3) * (-2)

Je to 0 pre všetky roky, ktoré začínajú s 19, 23, 27. Je to 2 pre všetky roky, ktoré začínajú s 18, 22, 26. Je to 4 pre všetky roky, ktoré začínajú s 17, 21, 25. Je to 6 pre všetky roky, ktoré začínajú s 16, 20, 24.

Cyklus 400 rokov v Gregoriánskom kalendári má 146097 dní a ti sú deliteľné 7. Dni v týždni sa teda opakujú každých 400 rokov, rok 2004 má napr. tie isté dni v týždni ako 1604, 2404, 2804 atď.

Konečná cifra a oprava priestupného roku[upraviť | upraviť zdroj]

Teraz všetky cifry sčítame a vypočítame tento súčet mod 7. Doteraz sme pripočítali priestupný deň celému roku, výpočet je teda správny až od 1.3. Ak je dátum v Januári alebo Februári musíme teda 1 odpočítať od konečnej cifry (alebo 6 pripočítať ku konečnej cifre).

Podľa konečnej cifry teraz rozhodneme na ktorý deň hľadaný dátum padne resp. padol: 0 = Nedeľa, 1 = Pondelok, 2 = Utorok, 3 = Streda, 4 = Štvrtok, 5 = Piatok, 6 = Sobota

Príklady[upraviť | upraviť zdroj]

14. Júl 1789

1) 14 mod 7 = 0
2) Júl = 6
3) (89 + (89 div 4)) mod 7 = (89 + 22) mod 7 = 111 mod 7 = 6
4) (17 mod 4 - 3) * (-2) = (1 - 3) * (-2) = (-2) * (-2) = 4
5) (0 + 6 + 4 + 6) mod 7 = 2, žiadna oprava

Bastilla bola dobytá v utorok.

Externé odkazy[upraviť | upraviť zdroj]