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

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ť

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ť

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

Cifra dňa upraviť

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

Cifra mesiaca upraviť

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ť

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ť

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ť

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ť

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

Bastila bola dobytá v utorok.

Externé odkazy upraviť