Algoritmus na výpočet dňa v týždni
Z Wikipédie
V tomto článku je opísaný algoritmus na výpočet dňa v týždni pre ľubovoľný dátum.
Obsah |
[upraviť] mod a div
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
[upraviť] Výpočet
Pre výpočet je potrebných nasledujúcich päť cifier:
[upraviť] Cifra dňa
Cifra dňa je deň v mesiaci mod 7.
[upraviť] Cifra mesiaca
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ť.
[upraviť] Cifra roku
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 vydí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.
[upraviť] Cifra storočia
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ď.
[upraviť] Konečná cifra a oprava priestupného roku
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
[upraviť] Príklady
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.