1 Punkte von GN⁺ 2024-05-26 | 1 Kommentare | Auf WhatsApp teilen
  • Lewis Carroll schlug in einem am 31. März 1887 an Nature gesendeten Brief ein Verfahren vor, mit dem sich der Wochentag eines beliebigen Datums im Kopf bestimmen lässt
  • Dabei wird das Datum in die vier Elemente Jahrhundert, Jahr, Monat und Tag zerlegt, addiert und bei jedem Zwischenschritt nur der Rest bei Division durch 7 beibehalten, um die Komplexität zu verringern
  • Carroll sagte, dass er selbst im Durchschnitt etwa 20 Sekunden brauche, und meinte, ein schneller Rechner könne es auch in weniger als 15 Sekunden schaffen
  • Die Regeln enthalten den Unterschied zwischen Old Style und New Style, eine Schaltjahrkorrektur sowie Monatswerte; das Endergebnis wird als 0=Sunday, 1=Monday usw. interpretiert
  • In den Beispielrechnungen ergibt sich für den 18. September 1783 Thursday, für den 23. Februar 1676 nach Schaltjahrkorrektur Wednesday

Das Datum in vier Elemente zerlegen

  • In einem am 31. März 1887 an Nature gesendeten Brief stellte Lewis Carroll eine Methode vor, mit der sich der Wochentag eines bestimmten Datums per Kopfrechnung bestimmen lässt
  • Das eingegebene Datum wird in vier Teile aufgeteilt
    • Century-Item: die ersten beiden Ziffern des Jahres
    • Year-Item: das Jahr innerhalb des Jahrhunderts
    • Month-Item: der Monat
    • Day-Item: der Tag des Monats
  • Jedes Element wird berechnet und zur laufenden Summe addiert; wenn ein Element oder die Summe 7 überschreitet, wird nur der Rest bei Division durch 7 beibehalten

Rechenregeln für die einzelnen Elemente

  • Century-Item

    • Old Style gilt als am 2. September 1752 beendet; der Jahrhundertwert wird von 18 abgezogen
    • New Style beginnt am 14. September 1752; dabei wird der Rest des Jahrhundertwerts bei Division durch 4 von 3 abgezogen und anschließend mit 2 multipliziert
    • Für das Century-Item von 1811 werden beispielsweise die ersten beiden Ziffern 18 verwendet
  • Year-Item

    • Zum Jahr innerhalb des Jahrhunderts werden die Anzahl der Zwölfer, der Rest sowie die Anzahl der Vierer in diesem Rest addiert
  • Month-Item

    • Beginnt oder endet der Monatsname mit einem Vokal, wird seine Position im Jahr von 10 abgezogen
    • Addiert man dazu die Anzahl der Tage des Monats, erhält man den Wert des folgenden Monats
    • Nach Division durch 7 werden folgende Monatswerte verwendet
      • January 0, February 3, March 3, April 6, May 1, June 4
      • July 6, August 2, September 5, October 0, November 3, December 5
  • Day-Item

    • Verwendet wird einfach der Tag des Monats selbst
  • Schaltjahrkorrektur

    • Fällt das Datum auf January oder February eines Schaltjahres, wird von der Endsumme 1 abgezogen
    • Ist die Summe 0, wird zunächst 7 addiert und danach 1 abgezogen
    • Ein Schaltjahr ist ein durch 4 teilbares Jahr; bei Jahrhundertjahren im New Style gibt es jedoch eine Ausnahme, wenn die Jahrhundertszahl nicht durch 4 teilbar ist
    • 1800 ist im New Style ein Beispiel für diese Ausnahme
    • Das Endergebnis wird als Wochentagsnummer interpretiert: 0 steht für Sunday, 1 für Monday und danach fortlaufend entsprechend

Rechenbeispiele und Quelle

  • Das Ergebnis für den 18. September 1783 ist Thursday
  • Der 23. Februar 1676 ergibt nach Schaltjahrkorrektur Wednesday
  • Überliefert ist dieses Verfahren durch Edward Wakelings Rediscovered Lewis Carroll Puzzles, 1995

1 Kommentare

 
GN⁺ 2024-05-26
Hacker-News-Kommentare
  • Diese Methode ist der, die ich benutze, sehr ähnlich, und nachdem ich mit Art Benjamin gesprochen habe, stellte sich heraus, dass er ebenfalls eine ähnliche Methode verwendete. In 10–15 Sekunden geht das leicht, aber es erfordert Übung, sehr wenig Auswendiglernen und etwas Kopfrechnen
    Ich benutze sie auch oft, um das Gefühl dafür nicht zu verlieren, und wenn man sie einmal beherrscht, ist sie überraschend nützlich, sodass man sie weiter benutzt. J. H. Conway verwendete die andere Technik, die Doomsday rule, und für die Berechnung von Daten in diesem Jahr bin ich darauf umgestiegen. Sie ist schneller und einfacher, aber den „Doomsday“ anderer Jahre zu finden ist schwieriger, daher kehre ich dann zur ursprünglichen Methode zurück
    Zum Beispiel sind beim 2024/05/24 seit 2012 zwölf Jahre vergangen, es gab 3 Schaltjahre, die magische Zahl für Mai ist 2, und wenn man den Tag 24 addiert und mod 7 nimmt, ergibt (12+3+2+24)=6, also Freitag. Die magischen Zahlen der einzelnen Monate kann man sich als 144 / 025 / 036 / 146 merken, und bei Bedarf lassen sie sich auch aus dem Prinzip herleiten

    • 144 : Jan, Feb, Mar kann man so verstehen, dass es Jan=1, Feb=4, Mar=4 bedeutet
    • Diese Erklärung konnte ich mir sofort merken. Als ich allerdings 7. Februar 2032 ausprobierte, ergab 20+5+4+7 ≡ 1 und ich erwartete Sonntag, tatsächlich war es aber Samstag, weil 2032 ein Schaltjahr ist und das Datum vor dem 29. Februar liegt
      In solchen Fällen, also vor oder bis zum 29. Februar eines Schaltjahres, muss man 1 abziehen
    • Die Kombination aus Auswendiglernen und Berechnung ist nützlich. 0, 1, -1, 0, 0, 1, 1, 2, 3, 3, 4, 4 ist der Offset zwischen dem Tag des Jahres für den 1. jedes Monats und dem Tag des Jahres, den man erhielte, wenn alle vorherigen Monate 30 Tage hätten
      Wenn zum Beispiel die ersten 11 Monate alle 30 Tage hätten, dann wäre der 25. Dezember der 355. Tag, also 30×11+25=355, und wenn man den 12. Offset 4 addiert, erhält man den tatsächlichen 359. Tag. Diese Offset-Folge ist leicht zu merken, und wenn man sie einmal kennt, erhält man die magischen Zahlen der Monate mit Magic(n)=2n+Offset(n)+c
      Bei den magischen Zahlen 1 4 4 0 2 5 0 3 6 1 4 6 ist c=-1, und für Dezember ergibt sich 2×12+4-1 ≡ 6 (mod 7). Umgekehrt kann man aus den gemerkten magischen Zahlen auch die Offsets wiederherstellen, indem man Magic(n)-2n-c berechnet; man muss sich nur merken, dass der Offset-Bereich [-1,4] ist
    • Die Methode von Lewis Carroll wirkt viel einfacher und schneller, daher weiß ich nicht genau, welchen Vorteil diese Methode ihr gegenüber hat, und die Komplexität scheint deutlich höher zu sein
  • Beim Lesen des Artikels habe ich angefangen, den Unterschied zwischen Old-Style-/New-Style-Daten und die Ereignisse von 1752 nachzuschlagen. Laut dem Calendar (New Style) Act 1750 begann das gesetzliche Jahr in England bis ins 18. Jahrhundert hinein über Jahrhunderte am 25. März, also am Lady Day
    Daher folgte auf den 24. März 1707 zum Beispiel direkt der 25. März 1708, und auf den 31. Dezember 1708 folgte immer noch der 1. Januar 1708; 1709 war also noch fast drei Monate entfernt. Gut, dass das geändert wurde

  • Der Berechnungsweg für die Monatseinträge im Artikel ist schwer nachzuvollziehen. Der Artikel erklärt, dass man, wenn ein Monat mit einem Vokal beginnt oder endet, seine Position im Jahr von 10 abzieht und dann die Anzahl der Tage dieses Monats addiert, um den Eintrag des nächsten Monats zu erhalten.
    Aber der Monat vor Januar ist Dezember, und der beginnt oder endet nicht mit einem Vokal, also dürfte man nichts von 10 abziehen und es müsste 12+31 ≡ 1 herauskommen, während im Artikel 0 steht. Für Februar endet January auf einen Vokal, also müsste 10-1+31 ≡ 4 gelten, aber im Artikel steht 3, und auch für März passt die Rechnung auf Basis von February nicht.
    April und Mai stimmen, aber Juni wieder nicht, daher weiß ich nicht, was ich falsch verstanden habe.

    • January scheint ein fester Wert 0 zu sein, February und March ebenfalls feste Werte 3, und auch December wirkt so, als sei es ein im Artikel direkt vorgegebener fester Wert.
      Die Logik (10-Position)+Tage mod 7 scheint auf Basis des Vormonats nur für jeden zweiten Monat wie May, July, September und November zu funktionieren, und die Vokalregel wirkt eher wie eine Merkregel, um sich zu merken, auf welche Monate man diese Rechnung anwenden kann. Für die übrigen Monate scheint man Eintrag+Tage mod 7 des Vormonats zu verwenden, aber aus welcher Stelle des Artikels sich diese Deutung ergibt, ist unklar.
    • Ich bin an derselben Stelle hängen geblieben, und die plausibelste Deutung ist für mich diese: Die Eintragsnummer jedes Monats lässt sich berechnen, indem man zur Eintragsnummer des Vormonats die Anzahl der Tage des Vormonats addiert und dann mod 7 nimmt.
      Für Januar gibt es keinen Vormonat, also setzt man alles auf 0 und das Ergebnis ebenfalls auf 0. Man muss nicht jedes Mal ab Januar bis zum gewünschten Monat durchrechnen, denn für Monate, die mit einem Vokal beginnen oder enden, kann man die Abkürzung 10-Monatsnummer verwenden. Dabei zählt y nicht als Vokal. Oder man merkt es sich einfach auswendig; das ist womöglich leichter.
    • Ich hatte dasselbe Problem und habe mehrere Umdeutungen der Formel ausprobiert, aber nichts davon hat geholfen.
  • Carrolls Algorithmus hat sich im Lauf der Zeit weiterentwickelt. Der First Sunday Doomsday Algorithm(https://firstsundaydoomsday.blogspot.com/2009/12/quick-start-guide.html) enthält Verbesserungen, die bis 2023 veröffentlicht wurden, und umfasst auch die „odd+11“-Regel von Fong & Walters zur Berechnung des Jahrescodes: https://arxiv.org/abs/1010.0765

  • Ich habe einen Artikel dazu geschrieben, weil ich das für eine intuitivere Methode halte, das zu berechnen: https://gcanyon.wordpress.com/2013/04/09/a-better-way-to-calculate-the-day-of-the-week/

  • Es ist wirklich faszinierend, Art Benjamin in seinem TED-Vortrag dabei zuzusehen. Wenn man genau hinschaut, sieht man, dass er die Zwischenschritte mit Handbewegungen verfolgt.
    Wenn man es einmal verstanden hat, wirkt es selbstverständlich, ist aber äußerst clever. Auf https://www.ted.com/talks/arthur_benjamin_a_performance_of_mathemagic geht es bei 7:47 los.

  • So berechnet man mit der Lewis-Carroll-Methode das heutige Datum, also den 24. Mai 2024. Der Jahrhundertseintrag ist für das 20. Jahrhundert 20/4=5, Rest 0, 3-0=3, 3×2=6.
    Der Jahreseintrag ist 24/12=2, Rest 0, die Anzahl der darin enthaltenen Vierer ist 0, also 2+0+0=2. Der Monatseintrag ist laut Artikel für May gleich 1, und der Tageseintrag ist 24. Addiert ergibt das 6+2+1+24=33, und 33 mod 7 = 5, also Freitag.

    • Ich hätte mir gewünscht, dass ausgeschrieben wird, wie genau May=1 beim Monatseintrag zustande kommt. Selbst mit der Erklärung verstehe ich das überhaupt nicht.
  • Den Leuten, die sagen, Notation sei nicht wichtig, würde ich gern sagen, dass die Mathematik früher komplett so aussah, bevor man bessere neue Notationen hatte.
    Man könnte fast sagen, dass es in der Mathematik kaum etwas Wichtigeres als Notation gibt, und in der Informatik ist es genauso. Deshalb sind Lisp-artige Sprachen eine so offensichtliche Wahl, wenn Variablen explizit sind.

    • Beim Schach war es genauso. Wenn man an den Zug denkt, bei dem Weiß im ersten Zug den weißen Springer, der dem König am nächsten steht, vom Ausgangsfeld aus zwei Felder nach vorne und ein Feld nach links zieht, dann ist die Notation dieses Zuges vom 17. Jahrhundert bis heute immer kürzer geworden.
      Anfang des 17. Jahrhunderts hieß das „The white king commands his owne knight into the third house before his owne bishop.”, Mitte des 18. Jahrhunderts K. knight to His Bishop's 3d., Anfang des 19. Jahrhunderts K.Kt. to B.third sq., um 1890 KKt-B3, Mitte des 20. Jahrhunderts N-KB3, und heute Nf3 oder, wenn man sprachabhängige Figurenbezeichnungen vermeiden will, ♘f3: https://www.knightschessclub.org/the_history_of_notation.html
  • Wenn er es in weniger als 20 Sekunden geschafft hat, kann man das durchaus beeindruckend nennen. Er selbst hielt sich nicht für einen Schnellrechner.

    • Sein Maßstab dürften andere Professoren gewesen sein, die in Oxbridge Mathematik unterrichteten.
  • Ich habe ein Python-Skript zur Wochentagsberechnung geschrieben; wenn man 2024-05-24 eingibt, kommt Friday heraus. Es addiert Jahrhundertseintrag, Jahreseintrag, ein Array von Monatseinträgen und den Tageseintrag und wendet für Schaltjahre in Januar und Februar eine Korrektur an.
    Für Daten vor dem 14. September 1752 habe ich es so umgesetzt, dass ein gesonderter Jahrhundertseintrag verwendet wird.

    • 1752 einzubeziehen ist knifflig. Im Britischen Empire wurden bei der Einführung des gregorianischen Kalenders die Tage vom 3. bis 13. September übersprungen, sodass dieses Jahr als einziges nur 355 Tage hatte.
      Diese ausgelassenen Daten wurden weltweit nicht einheitlich übernommen, und weil der Zeitpunkt je nach Land und Religion der aufzeichnenden Person unterschiedlich war, sorgen sie in historischen Aufzeichnungen bis heute für Probleme.