|
Moin!
Ich hatte vor etlichen Jahren mal die erweiterte Gauß-Formel nach Lichtenberg in VBA abgebildet.
https://de.wikipedia.org/wiki/Gau%C3%9Fsche_Osterformel#Eine_erg.C3.A4nzte_Osterformel
Keine Angst vor Gleichungssystemen! ;)
Die dürften in aller Regel schneller rechnen als so ein Einzeiler-Bandwurm …
Ich werde dies aber mal übers Wochenende testen.
(Gegenüberstellung aller hier vorgestellten Lösungen nebst meiner)
Als Teaser vorab aber meine Implementierung:
Function Ostersonntag(ByVal j As Integer) As Date
' Ergänzte Gauß-Formel nach Heiner Lichtenberg (1997)
' http://de.wikipedia.org/wiki/Gau%C3%9Fsche_Osterformel#Eine_erg.C3.A4nzte_Osterformel
' VBA-Umsetzung durch RalfP
' Variablenbedeutung
' x(0) = Säkularzahl
' x(1) = säkulare Mondschaltung
' x(2) = säkulare Sonnenschaltung
' x(3) = Mondparameter
' x(4) = Keim für ersten Frühlingsvollmond
' x(5) = kalendarische Korrekturgröße
' x(6) = Ostergrenze
' x(7) = erster Sonntag im März
' x(8) = Osterentfernung in Tagen
' x(9) = Tag des Ostersonntags als Märzdatum (32. März = 1. April usw.)
Dim x(9) As Long
x(0) = j \ 100
x(1) = 15 + (3 * x(0) + 3) \ 4 - (8 * x(0) + 13) \ 25
x(2) = 2 - (3 * x(0) + 3) \ 4
x(3) = j Mod 19
x(4) = (19 * x(3) + x(1)) Mod 30
x(5) = (x(4) + x(3) \ 11) \ 29
x(6) = 21 + x(4) - x(5)
x(7) = 7 - (j + j \ 4 + x(2)) Mod 7
x(8) = 7 - (x(6) - x(7)) Mod 7
x(9) = x(6) + x(8)
Ostersonntag = DateSerial(j, 3, x(9))
'denn der 32.3. ist automatisch der 1.4.
End Function
|