AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Kopfrechnen im Julianischen Kalender

Ein Thema von Wolfgang Mix · begonnen am 8. Jan 2016 · letzter Beitrag vom 31. Aug 2016
Antwort Antwort
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#1

AW: Kopfrechnen im Julianischen Kalender

  Alt 9. Jan 2016, 18:43
Danke Stephan,

du hast vollkommen Recht.
Ich habe jetzt die äusseren Klammern durch eckige ersetzt.
Sieht auch optisch überschaubarer aus. Beim vorletzten mod fehlte 7.
War Fummelei auf meiner Mac-Tastatur und Pages statt MS Word, weil eckige Klammern
nur über Shortcuts zu erreichen sind (Alt+5 und Alt+6 war die Lösung).

Das PDF in Post 1 habe ich ersetzt.
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824

Geändert von Wolfgang Mix ( 9. Jan 2016 um 19:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#2

AW: Kopfrechnen im Julianischen Kalender

  Alt 10. Jan 2016, 18:44
Liebe DP-Gemeinde,

da ich meinen Post1 wegen abgelaufener 14400 Minuten nicht mehr updaten kann,
meinen Dank noch einmal an meine Helfer.
Wer sie bisher nicht kannte, findet z.B. in folgenden Links Informationen.

Steffen Polster alias mathematiker hier bei DP
Winfunktion ( Jetzt Mathematik alpha kostenlos und fast täglich aktualisiert)
http://www.heise.de/download/winfunk...s-1186485.html
http://mathematikalpha.de

Gert Mittring
http://www.fischerverlage.de/buch/Re.../9783596189892
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824

Geändert von Wolfgang Mix (10. Jan 2016 um 19:21 Uhr)
  Mit Zitat antworten Zitat
Mathematiker
(Gast)

n/a Beiträge
 
#3

AW: Kopfrechnen im Julianischen Kalender

  Alt 14. Jan 2016, 13:45
Hallo,
der Algorithmus von Wolfgang ist sehr interessant und in seiner Art neu. Für den julianischen Kalender kannte ich so etwas noch nicht. Auch im Netz habe ich nichts gefunden.

Deshalb meine Bitte: Könnten die Moderatoren den Thread in den Bereich Algorithmen verschieben. Da gehört das Thema eher hin, bevor es von den vielen "Klatsch und Tratsch"-Geschichten, die alle wichtig sind, "verdeckt" wird.

Danke
Mathematiker
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#4

AW: Kopfrechnen im Julianischen Kalender

  Alt 20. Jan 2016, 17:12
@daniel & mathematiker

Danke an beide!

Ich schiebe jetzt im Anhang noch eine Kurzanleitung hinterher.
Vielleicht kann einer der Moderaten den noch in Post 1 dranhängen.

Danke
Angehängte Dateien
Dateityp: pdf Mix Algorithmus.pdf (332,8 KB, 19x aufgerufen)
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824

Geändert von Wolfgang Mix (20. Jan 2016 um 20:23 Uhr) Grund: Hinweis auf Schaltjahre fehlte
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.101 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Kopfrechnen im Julianischen Kalender

  Alt 21. Jan 2016, 13:04
@Wolfgang:
Na, da hast du dich ja mächtig ins Zeug gelegt.
Hast du eigentlich mal kontrolliert, ob das auch funktioniert.
Das Verfahren liefert falsche Ergebnisse
1) für 07.08, 14.08, 21.08 und 28.08 in den Jahren 0600 und 1300.
2) für alle Tage im September in allen Jahren.
Fehler 1 lässt sich beheben, indem man bei der Addition der Zahlen noch 7 hinzu addiert.
Fehler 2 lässt sich beheben, indem man als Kennziffer für September 3 (statt 5) verwendet.

Im übrigen verwende ich lieber eine andere Methode, die den Vorteil hat, dass sie universell verwendbar ist, also auch für den gregorianischen Kalender.
Mich würde eher interessieren, auf welchen Wochentag zum Beispiel der 24.12.2016 fällt; an welchem Wochentag Kolumbus sein Ei auf die Spitze gestellt hat ist für mich weniger spannend.

Und hier kurz diese Methode:
Code:
Y=Jahr
YY=das Jahr im Jahrhundert, also Y mod 100.
YH=Das Jahrhundert, also Y div 100.

N1 := YY div 12
N2 := YY mod 12
N3 := N2 div 4
Wenn das Datum vor dem 15.10.1582 liegt:
   N4 := 7 - YH mod 7
sonst:
   N4 := 9 - YH mod 4 * 2
DD := (N1 + N2 + N3 + N4) mod 7
DD ist der Wochentag für den letzten Tag des Februars im Jahr Y. (DD steht für "Doomsday")
Hierbei ist 0 = Sonntag, 1 = Montag, …, 6=Samstag.
Wie kommt man jetzt zum Wochentag für einen bestimmten Tag im Jahr?!

Wenn der letzte Tag im Februar = DD ist, dann sind in den einzelnen Monaten folgende Tage ebenfalls = DD.

1) In allen geraden Monaten > 2 der Tag der = Monat ist. also 4.4, 6.6, 8.8. 10.10. 12.12.
2) Im Mai der 9te, im September der 5te, im Juli der 11te, im November der 7te. Merksatz : "I work from 9 to 5 at the 7-11." (7-Eleven ist eine internationale Einzelhandelskette.)
Fehlen noch Januar um März.
Für März kann man sich merken, dass der 0te März identisch mit dem letzten Tag im Februar wäre.
Für Januar kann man sich merken, dass der 31te DD ist, außer in Schaltjahren, da ist es der 32te.

Das alles könnt ihr hier nachlesen: https://de.wikipedia.org/wiki/Doomsday-Methode

Nehmen wir als Bespiel das heutige Datum (21.01.2016)
N1 = 1 (16 div 12)
N2 = 4 (16 mod 12)
N3 = 1 (N2 div 4)
N4 = 9 (9 - 20 mod 4 * 2)
DD = 1 (N1 + N2 + N3 + N4) mod 7
DD = Montag
Der 32.01 ist Montag, also auch der 25.01. und der 18.01., also ist der 21.01. drei Tage nach Montag, also Donnerstag.

Und für den Computer hier eine kurze Funktion, sowohl für den Julianischen wie auch für den Gregorianischen Kalender.
Die Funktion liefert Werte im Bereich 0 .. 6, wobei 0=Montag und 6=Sonntag ist.
Delphi-Quellcode:
FUNCTION DoomsDayWD(Y,M,D:Integer):Integer;
const MN:Array[1..12] of Integer=(31,28,00,04,09,06,11,08,05,10,07,12);
var YY,X,N1,N2,N3,N4,N5,DD:Integer;
begin
   YY:=Y mod 100;
   N1:=YY div 12;
   N2:=YY mod 12;
   N3:=N2 div 4;
   if (Y<1582) or (Y=1582) and (M<10) or (Y=1582) and (M=10) and (D<15) then begin
      N4:=7-Y div 100 mod 7;
      N5:=Ord((M<3) and (Y mod 4=0));
   end else begin
      N4:=9-2*(Y div 100 mod 4);
      N5:=Ord((M<3) and (Y mod 4=0) and ((Y mod 100<>0) or (Y mod 400=0)))
   end;
   DD:=(N1+N2+N3+N4+6) mod 7; // MO=0, SO=6
   X:=MN[M]+N5;
   Result:=(DD-X+D+35) mod 7;
end;
Tja, und nun hoffe ich, dass ich mich nicht irgendwo vertippt habe - das wäre mir jetzt etwas peinlich.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....

Geändert von Amateurprofi (21. Jan 2016 um 16:30 Uhr) Grund: Fehler korrigiert
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#6

AW: Kopfrechnen im Julianischen Kalender

  Alt 21. Jan 2016, 14:55
@Amateurprofi

Vielen Dank für deine Antwort.
Ich bin gerade am Kofferpacken, um der Kälte zu entfliehen.

Soviel vorab: Es geht immer noch um "Kopfrechnen" mit möglichst kleinen ganzen Zahlen,
nicht um optimalen Code.

Zum Fehler 1 und seiner Behebung dachte ich : wt + 7 oder wt - 7 ergibt denselben Wochentag wt!
Bei Fehler 2 muss September tatsächlich die Merkziffer 3 sein! Danke für den Hinweis.

Wenn du Mittrings Merkziffern in jeder Zeile 3 addierst, kommt man zu denselben Merkziffern.

Deine Prüfdaten betrachte ich als Hausaufgabe

Zu Deinem Schlusssatz : Ich habe mich tatsächlich vertippt.

Lass mir ein bisschen Zeit, möglicherweise bin ich einige Zeit im Tal der Ahnungslosen ohne Internet (WLAN),
TP und Delphi.

Wolfgang
Angehängte Dateien
Dateityp: pdf Mix Algorithmus.pdf (333,0 KB, 5x aufgerufen)
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824

Geändert von Wolfgang Mix (21. Jan 2016 um 17:48 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.101 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Kopfrechnen im Julianischen Kalender

  Alt 21. Jan 2016, 18:09
Zum Fehler 1 und seiner Behebung dachte ich : wt + 7 oder wt - 7 ergibt denselben Wochentag wt!
Ja, sollte man meinen.
Aber bei diesen besonderen Daten in 1300 bzw. 0600 sind alle Zwischenergebnisse 0, außer Zahl 5, die ist 1 bzw. 6.
Beispiel:
Datum 28.08.1300
Code:
1. 28 mod 7      = 0 (Zahl 1) (Tag mod 7)
2. K             = 0 (Zahl 2) (Aus Tabelle für Monat 8)
3. 0 div 12      = 0 (Zahl 3) (Jahr im Jahrhundert div 12)
4. 0 mod 12      = 0           (Jahr im Jahrhundert mod 12)
5. 0 div 4       = 0 (Zahl 4) (Jahr im Jahrhundert mod 12 div 4)
6. 13 mod 7      = 1 (Zahl 5) (Jahrhundert mod 7)

Da Zahl 5 subtrahiert wird, ergibt sich ein negatives Ergebnis nämlich -1 bzw. -6.
Und -1 mod 7 ergibt etwas anderes als (-1 + 7) mod 7.

Durch addieren von 7 kommt das Zwischenergebnis wieder in den positiven Bereich.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz