Stránka 2 z 2

Napsal: 19 úno 2012, 20:34
od Brozicek
V příloze je "Generátor kalendáře" pro EXCEL, ve kterém je prakticky využit algoritmus výpočtu data velikonoc. Zde jsou vzorce v modifikované podobě.
Vím že kalendář je v každém mobilu. Tento EXCELovský kalendář, který proti mobilu zvýrazňuje všechny svátky v ČR včetně velikonočního pondělí, může mít pro někoho snad i praktické využití. Pro mne se stal užitečnou pomůckou v práci i soukromí.
Kalendář umožňuje rychlý pohled do minulosti i do budoucnosti. Stačí napsat počáteční datum a nakopírovat řádky nebo sloupce podle délky období, které mne zajímá.

Napsal: 19 úno 2012, 21:07
od tomasjedno
Brozicek píše:...Vyšlo mi, že datum velikonoc je větší než 25.4. jen v roce 1981 a 2076. Tak jsem zachránil situaci tím, že v těch dvou rocích odečtu těch 7 dní...
Tím bych si nebyl tak jist. Algoritmus na Wiki, co jsem na něj dával odkaz, hlásí posun Velikonoc na termín o 1 týden dříve pro roky
1954 (neděle 25.4.->18.4.)
1981 (neděle 26.4.->19.4.)
2049 (neděle 25.4.->18.4.)
2076 (neděle 26.4.->19.4.)
(v letech 1943 a 2038 mu Velikonoční neděle 25.4. nevadí - jedná se o aplikaci toho prvního if: "Je-li u = 25, d = 28, e = 6 a a > 10, pak u = 18, v = 4 a Velikonoční neděle připadá na 18. duben.")

Napsal: 19 úno 2012, 21:31
od tomasjedno
BTW, protože Excel si ve skutečnosti ukládá datum jako celé číslo (den č. 1 je 1.1.1900, dneska je pro něj den 40958), není nic jednoduššího, než použít Gaussovu metodu
Velikonoční neděle = 22.3.rrrr + d + e [=DATUM(A4;3;22)+X4+Y4]
kde ty hodnoty d, e jsou definovány v tom Vašem jpg anebo tady: http://cs.wikipedia.org/wiki/V%C3%BDpo% ... _Velikonoc
a provést korekci o týden pro ty roky 1954, 1981, 2049, 2076.

Napsal: 19 úno 2012, 23:03
od Brozicek
tomasjedno píše:
Brozicek píše:...Vyšlo mi, že datum velikonoc je větší než 25.4. jen v roce 1981 a 2076. Tak jsem zachránil situaci tím, že v těch dvou rocích odečtu těch 7 dní...
Tím bych si nebyl tak jist. Algoritmus na Wiki, co jsem na něj dával odkaz, hlásí posun Velikonoc na termín o 1 týden dříve pro roky
1954 (neděle 25.4.->18.4.)
1981 (neděle 26.4.->19.4.)
2049 (neděle 25.4.->18.4.)
2076 (neděle 26.4.->19.4.)
(v letech 1943 a 2038 mu Velikonoční neděle 25.4. nevadí - jedná se o aplikaci toho prvního if: "Je-li u = 25, d = 28, e = 6 a a > 10, pak u = 18, v = 4 a Velikonoční neděle připadá na 18. duben.")
Nevím v čem je mezi algoritmy rozpor. V mém algoritmu JPG je jasně napsáno, že pokud, cituji "připadne datum velikonoc později než na 25. dubna....".
Podle toho by se pak velikonoce dne 25.4.1954 a 25.4.2049 o týden dopředu neposouvaly, protože "později" znamená, že datum 25.4 je ještě platné datum pro velikonoce.
Na tu Gausovu metodu se musím podívat co je to zač. Školu jsem končil už v roce 1969 a už si dávno nepamatuji o co jde. Pokud se moje dlouhé vzorce dají takto jednoduše nahradit, pak celá debata zde měla význam a sám rád tu Gausovu metodu budu ve vzorcích u sebe také aplikovat (i v tom kalendáři, kde je délka mých vzorců na hranici povolené délky).

Napsal: 19 úno 2012, 23:44
od tomasjedno
Brozicek píše:...Nevím v čem je mezi algoritmy rozpor. V mém algoritmu JPG je jasně napsáno, že pokud, cituji "připadne datum velikonoc později než na 25. dubna....".
V tom JPG algoritmu je ta podmínka dost neprecizně formulovaná, stejně jako to "provedeme oba výpočty a vybereme ten, který vyhovuje" nebudí obzvláštní důvěru, jako by to psal novinář.

Oproti tomu ten algoritmus popsaný ve Wiki je výrazně precizněji formulován (dá se mu vytknout jen to, že test "Je-li u = 25, d = 28, e = 6 a a > 10" je zbytečně složitý, protože je-li u=25 a d=28, pak je nutně e=6 a tedy není třeba testovat e).
Tu podmínku "Je-li u = 25, d = 28, e = 6 a a > 10" si těžko vycucali z prstu, a přitom právě tou se oba algoritmy liší; právě ona ošetřuje ty dva posuny z neděle 25.4. na 18.4. v letech 1954 a 2049, a ty dva neposuny v letech 1943 a 2038 (kdy je také datum pondělka >25). A co jsem tak pátral po netu, tak v r. 1954 byly Velikonoce zdá se opravdu 18.4. V pondělí 19.4.1954 nevyšlo Rudé právo, zatímco v pondělí 26.4. ano.
Jak to bude doopravdy v r. 2049 těžko říct - třeba se řeckokatolická a římskokatolická církev dohodnou a budou úplně jindy :D

Napsal: 20 úno 2012, 00:12
od Bernard
Podle této wiki stránky Computus měl Gauss se svým algoritmem drobné problémy a omezil jeho platnost na 18. a 19. století. Potom tam následuje algoritmus anonymního tvůrce z r. 1876, který snad přetrvává i do dnešních časů. Ten nemá žádná větvení a rozhodování, což se mi líbí. Podle něj jsem udělal ten graf puntíků.

Napsal: 20 úno 2012, 00:48
od tomasjedno
Bernard píše:l Gauss ...omezil jeho platnost na 18. a 19. století...
Problém působí roky 1900 a 2100, které nejsou přestupné.

Napsal: 20 úno 2012, 08:11
od Brozicek
Malá dává, větší bere. Na této stránce
http://kalendar.beda.cz/velikonoce.php
jsou data velikonoční neděle v 1954 a 2049 uváděna také s posunem o 1 týden, takže wikipedie a Tomasjedno vítězí. U sebe si vzorečky zkoriguji i pro tyto dva roky, abych svým potomkům "nezanechal v PC blud" :D.
Tím můžeme diskusi uzavřít. Já se už zcela určitě nepřesvědčím, jak to v roce 2049 bude ve skutečnosti. Mladším přeji, aby se svět do té doby nezřítil díky neschopným vládám do záhuby, nebo aby nepřišel ten konec světa.
Dík za debatu.

Napsal: 20 úno 2012, 10:11
od Crifodo
Brozicek píše: EXCEL má snad pro výpočet data velikonoc proti Visual Basic nebo Qbasic v tom, že se dají vzorečky dát do nějaké EXCELovské aplikace bez znalosti toho jak tam dostat prográmky v "basicu".
Předpokládám že tam vypadlo slovo "výhodu"? :wink:
Já vím, že je Qbasic nemoderní, ale nemůžu se nezastavit u porovnání velikostí aplikací a nároků, jen excel entní viewer má po nainstalování 80 mega a protože je to jen prohlížeč, nedovoluje měnit údaje v buňkách. Pro ten triviální výpočet je potřeba nainstalovat si "offis" což odhaduju na plné CD a dnes minimálně W XP.
Zatímco ten QB má 300 kB a běží i na 286 bootované z diskety, program zkompilovaný do standalone .exe ve verzi bez potřeby knihoven má 30 kB.
Čili na to, aby člověk naťukal 4 číslice a obdržel 2 číslice a osmiznakový řetězec, se sw nároky upgradovaly asi tak 500x.
Funguje to i v AVR, necelých 1200 bajtů, tedy zadávání i zobrazování pomocí terminálu na UART, když už by teda někdo měl tu úchylnou potřebu mít výpočet velikonoc v jednočipu. Bascom nedovoluje víc než tři parametry ve výrazu, takže rozepisování je trochu nepřehledné.

Kód: Vybrat vše

 $regfile = "ATtiny2313.dat"
                   $crystal = 20000000
                   $baud = 19200
                   Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
                   Dim Rok As Integer
                   Dim Den As Integer
                   Dim X As Integer
                   Dim Y As Integer
                   Print Chr(12)
                   Input "rok:" , Rok
                   X = Rok Mod 19
                   Den = 19 * X : Den = Den + 24
                   Den = Den Mod 30
                   X = Rok Mod 4 : Y = Rok Mod 7
                   X = X * 2 : Y = Y * 4
                   X = X + 5 : X = X + Y
                   Y = 6 * Den : X = X + Y
                   Y = X Mod 7 : X = 22 + Den
                   Den = X + Y


                   If Den < 57 Then Goto Brezen
                   Den = Den - 7


                   Brezen:
                   If Den > 31 Then Goto Duben
                   Print Den ; "/03"
                   End
                   Duben:
                   Den = Den - 31
                   Print Den ; "/04"
                   End

Napsal: 20 úno 2012, 15:17
od Habesan
Beztak je to jen blud a tmářství.
O tom, kdy na mě přijde jaro, přeci nerozhoduje něco tak bezvýznamného, jako jestli je noc kratší než den a měsíční svit vydrží až do rána a v ponědlí se nejde do práce.
Snad měli větší reprodukční výnosy, když do toho ti mladí praštili najednou, ovšem z hlediska nízké dětské úmrtnosti je pro početí vhodnější Srpen, po žních.

Chápete někdo, proč se dožínky jmenují októbrfest, když říjen je o dva měsíce později???

Napsal: 20 úno 2012, 16:03
od popopepe
Habesan píše: Chápete někdo, proč se dožínky jmenují októbrfest, když říjen je o dva měsíce později???
Země, kde zítra již znamená včera?? :lol:

Napsal: 20 úno 2012, 22:16
od tomasjedno
Habesan píše:...Chápete někdo, proč se dožínky jmenují októbrfest, když říjen je o dva měsíce později???
Oktoberfest 2011: So 17.9.- 3.10.2011
Oktoberfest 2012: So 22.9.- 7.10.2012
http://www.oktoberfest.de
Ještě nějaký dotaz? :D

Napsal: 21 úno 2012, 09:48
od Brozicek
tomasjedno píše:...
Ještě nějaký dotaz? :D
Ne dotaz, ale oznámení. Všechny zde uvedené vzorce a soubory jsem upravil tak, aby obsahovaly korekci pro roky 1954, 1981, 2049 a 2076. Tím jsem si zajistil, že zde nešířím "tmářství a bludy" :D .