Výpočet Velikonoční neděle

Úvodní stránka


Zde si můžete zkontrolovat postup výpočtu kalendářního data Velikonoční neděle pro roky větší jak 1582 (gregoriánský kalendář).
Všechny výpočty se provádí pouze s celými čísly, tedy například 23 děleno 4 je 5 a zbytek po dělení je 3.
Je nutné povolit JavaScript v prohlížeči!
Pro který rok hledáte Velikonoční neděli   
Výpočet Epakty (stáří fáze Měsíce na počátku roku):
Vydělte rok 19 a zapište zbytek po dělení
K předchozímu řádku přičtěte 1, výsledek je Zlaté číslo
Od Zlatého čísla odečtěte 1
Předchozí řádek vynásobte 11
Předchozí řádek dělte 30 a zapište zbytek po dělení, výsledkem je juliánská epakta
Století zadaného roku (v tomto případě první dvě cifry letopočtu zvětšené o 1)
Vynásobte století 3
Předchozí řádek dělte 4, výsledek je sluneční oprava
Vynásobte století 8
K předchozímu řádku přičtěte 5
Předchozí řádek dělte 25, výsledkem je měsíční oprava
Od Juliánské epakty odečtěte sluneční opravu
K předchozímu řádku přičtěte měsíční opravu
K předchozímu řádku přičtěte 8
Číslo musí být v intervalu 1-30, je-li předchozí řádek menší jak 1, přičtěte 30
nebo je-li předchozí řádek větší jak 30, odečtěte 30. Výsledkem je Epakta
K Epaktě je třeba přiřadit datum administrativního úplňku (Paschal Full Moon):
Je-li Epakta rovna 25 a současně je-li Zlaté Číslo větší jak 11, pak se mezivýsledek upraví na 26
Je-li Epakta rovna 24, pak se mezivýsledek upraví na 25
Je-li mezivýsledek menší jak 24, odečtěte jej od 44. Jinak jej odečtěte od 74. Výsledek nazveme PFM
Je-li číslo PFM menší jak 32, administrativní úplněk nastává v březnu a číslo ukazuje den v měsíci.
Je-li PFM větší jak 31, odečtete od něj 31 a dostanete den v dubnu, kdy nastává administrativní úplněk
Zjištění ve kterém dni týdne je administrativní úplněk:
Od století odečtěte 16
Předchozí řádek vynásobte 3
Předchozí řádek dělte 4
K předchozímu řádku přičtěte 10, výsledné číslo je gregoriánská oprava
Rok dělte 4
K předchozímu řádku přičtěte rok
K předchozímu řádku přičtěte 4
Od předchozího řádku odečtěte gregoriánskou opravu
Předchozí řádek dělte 7 a zapište zbytek po dělení
Předchozí řádek odečtěte od 7, výsledek je nedělní číslo
K PFM přičtěte 10
Od předchozího řádku odečtěte nedělní číslo
Předchozí řádek dělte 7 a zapište zbytek po dělení
V předchozím řádku značí 0 neděli, 1 pondělí, ... a 6 sobotu, v tento den nastává administrativní úplněk
Zjištění kalendářního data neděle následující po administrativním úplňku:
Velikonoční neděle

K Epaktě je možno přiřadit datum administrativního úplňku i za pomoci následující tabulky.
Protože Epakta 25 má přiřazeny dvě data, je nutné vybrat správné datum za pomoci následujícího pravidla:
pokud je Zlaté číslo větší jak 11, vyberte datum 17.duben, jinak vyberte 18.duben.
 Epakta  Administrativní úplněk 
112.duben
211.duben
310.duben
49.duben
58.duben
67.duben
76.duben
85.duben
94.duben
103.duben
 Epakta  Administrativní úplněk 
112.duben
121.duben
1331.březen
1430.březen
1529.březen
1628.březen
1727.březen
1826.březen
1925.březen
2024.březen
 Epakta  Administrativní úplněk 
2123.březen
2222.březen
2321.březen
2418.duben
2518. nebo 17.duben
2617.duben
2716.duben
2815.duben
2914.duben
3013.duben

Program v programovacím jazyce Python:
#!/usr/bin/python
# -*- coding: utf8 -*-

def velikonocniNedele(rok):
     if rok <= 1582:
          return "Gregoriánský kalendář začíná až od roku 1583 !"
     zlateCislo = rok % 19 + 1
     julEpakta = ((zlateCislo - 1) * 11) % 30
     stoleti = int(rok / 100) + 1
     slunecniOprava = int(3 * stoleti / 4)
     mesicniOprava = int((8 * stoleti + 5) / 25)
     epakta = (julEpakta - slunecniOprava + mesicniOprava + 8) % 30
     tmp = epakta
     if epakta == 24 or (epakta == 25 and zlateCislo > 11):
          tmp += 1 
     if tmp < 24:
          pfm = 44 - tmp
     else:
          pfm = 74 - tmp

     gregOprava = int(3 * (stoleti - 16) / 4) + 10
     nedele = 7 - (rok + int(rok / 4) + 4 - gregOprava) % 7
     denTydnePfm = (pfm + 10 - nedele) % 7
     velNedele = pfm - denTydnePfm + 7
     if velNedele < 32:
          return "%d.březen" % velNedele
     else:
          return "%d.duben" % (velNedele - 31)

rok = input("Zadejte rok : ")
print("Velikonoční neděle : " + velikonocniNedele(rok))

Opravdoví počítačoví hackeři použijí kompaktnější program:
#!/bin/sh
echo $* '[ddsf[lfp[Gregoriansky kalendář začíná až od roku 1583 !
]Pq]s@1583>@
ddd19%1+sg100/1+d3*4/12-sx8*5+25/5-sz5*4/lx-10-sdlg11*20+lz+lx-30%
d[30+]s@0>@d[[1+]s@lg11<@]s@25=@d[1+]s@24=@se44le-d[30+]s@21>@dld+7%-7+
[březen ]smd[31-[duben ]sm]s@31<@psnlmPpsn1z>p]splpx' | dc | sed 'N
y/\n/./'

Zpět na FAQ 3.2 nebo na kalendář

CZIN.eu