1 Punkte von GN⁺ 2024-05-26 | 1 Kommentare | Auf WhatsApp teilen

Die von Lewis Carroll vorgeschlagene Methode zur Datumsberechnung

Ein Brief, den Lewis Carroll am 31. März 1887 an Nature schickte:

Ich habe eine Methode entdeckt, mit der sich der Wochentag eines gegebenen Datums im Kopf berechnen lässt, und sende sie ein, weil sie die Leser interessieren könnte. Ich bin kein schneller Rechner und brauche im Durchschnitt etwa 20 Sekunden, um ein solches Problem zu lösen. Daher bin ich überzeugt, dass ein schneller Rechner nicht einmal 15 Sekunden benötigen würde.

Berechnungsmethode

  • Das gegebene Datum wird in 4 Teile aufgeteilt: Jahrhundert, Jahr, Monat und Tag.
  • Die folgenden 4 Posten werden berechnet, und jeder Posten wird zur Summe der vorherigen addiert. Wenn ein Posten oder eine Summe 7 übersteigt, wird durch 7 geteilt und nur der Rest beibehalten.

Jahrhundertsposten

  • Alter Stil (vor dem 2. September 1752): von 18 abziehen.
  • Neuer Stil (nach dem 14. September 1752): durch 4 teilen, den Rest von 3 abziehen und den Rest dann mit 2 multiplizieren.
  • Beispiel: Für das Jahr 1811 beträgt der Jahrhundertsposten 18.

Jahrposten

  • Vielfache von 12, Rest und das Vierfache des Rests addieren.

Monatsposten

  • Wenn der Name mit einem Vokal beginnt oder endet, wird seine Position im Jahr von 10 abgezogen. Zu diesem Wert wird die Zahl der Tage dieses Monats addiert.
  • Beispiel: Der Posten für Januar ist 0, für Februar oder März 3, für Dezember 12.
  • Endwerte: Januar 0, Februar 3, März 3, April 6, Mai 1, Juni 4, Juli 6, August 2, September 5, Oktober 0, November 3, Dezember 5.

Tagposten

  • Die Tageszahl des betreffenden Monats.

Schaltjahr-Anpassung

  • Wenn es sich um Januar oder Februar eines Schaltjahres handelt, wird 1 von der Endsumme abgezogen. Falls die Summe 0 ist, wird zuvor 7 addiert.
  • Schaltjahr: ein durch 4 teilbares Jahr, außer im neuen Stil Jahrhundertjahre, die nicht durch 4 teilbar sind (z. B. 1800).

Endergebnis

  • Das Endergebnis bezeichnet den Wochentag. 0 steht für Sonntag, 1 für Montag usw.

Beispiele

18. September 1783

  • Jahrhundertsposten: 17 durch 4 geteilt ergibt Rest 1. 3 minus 1 ergibt 2. 2 mal 2 ergibt 4.
  • Jahrposten: 83 sind 6 Dutzend und 11, zusammen 17. Plus 2 ergibt 19, geteilt durch 7 ergibt Rest 5. Gesamtsumme 9, geteilt durch 7 ergibt 2.
  • Monatsposten: Der Posten für August ist „10 minus 8“, also 2. Der Posten für September ist „2 plus 3“, also 5. Gesamtsumme 7, geteilt durch 7 ergibt 0.
  • Tagposten: 18 ergibt 4.
  • Endergebnis: Donnerstag.

23. Februar 1676

  • Jahrhundertsposten: 18 minus 16 ergibt 2.
  • Jahrposten: 76 sind 6 Dutzend und 4, zusammen 10. Plus 1 ergibt 11, geteilt durch 7 ergibt Rest 4. Gesamtsumme 6.
  • Monatsposten: Der Posten für Februar ist 3. Gesamtsumme 9, geteilt durch 7 ergibt 2.
  • Tagposten: 23 ergibt 2. Gesamtsumme 4.
  • Schaltjahr-Anpassung: 3.
  • Endergebnis: Mittwoch.

(Quelle: Edward Wakeling, Rediscovered Lewis Carroll Puzzles, 1995.)

Meinung von GN⁺

  • Lewis Carrolls Methode zur Datumsberechnung ist nützlich, um mathematisches Denken zu fördern.
  • Diese Methode ist ein interessanter Weg, Daten auch ohne Computer zu berechnen.
  • Wenn man Details wie die Schaltjahrberechnung versteht, lassen sich genauere Ergebnisse erzielen.
  • Auch ein Vergleich mit modernen Kalenderberechnungen dürfte interessant sein.
  • Für Menschen, die mathematische Rätsel mögen, könnte dies eine reizvolle Herausforderung sein.

1 Kommentare

 
GN⁺ 2024-05-26
Hacker-News-Kommentar

Zusammenfassung der Hacker-News-Kommentare

  • Nutzer A: Diese Methode ist der von mir verwendeten sehr ähnlich und wird auch von Art Benjamin genutzt. Man kann sie in 10–15 Sekunden anwenden, braucht dafür aber Übung, etwas Auswendiglernen und einfache Kopfrechenarbeit. Wenn man diese Technik beherrscht, ist sie sehr nützlich.

    • Beispiel: Berechnung des Wochentags für den 24. Mai 2024
      12 Jahre seit 2012
      3 Schaltjahre
      Magische Monatszahl 2
      Tag 24
      Rest nach Division der Summe durch 7: Freitag
      
  • Nutzer B: J. H. Conway verwendete eine andere Technik, die bei der Berechnung des Wochentags im aktuellen Jahr schneller und einfacher ist. Beim Berechnen des „Doomsday“ für andere Jahre ist sie jedoch schwierig, daher kehrt man zur Grundmethode zurück.

  • Nutzer C: Es war interessant, über den Unterschied zwischen altem und neuem Kalender im Jahr 1752 zu lesen. Im 18. Jahrhundert begann das gesetzliche Jahr in England am 25. März.

  • Nutzer D: Hat Schwierigkeiten, den Algorithmus zur Berechnung der Monatszahl zu verstehen. Beschreibt, wie die Zahl für jeden Monat berechnet wird, und weist darauf hin, dass der eigene Versuch nicht mit dem im Artikel angegebenen Ergebnis übereinstimmt.

  • Nutzer E: Carrolls Algorithmus hat sich im Lauf der Zeit weiterentwickelt. Stellt den First Sunday Doomsday Algorithm inklusive neuerer Verbesserungen vor.

  • Nutzer F: Hat einen Blogbeitrag geschrieben, der eine einfachere Methode erklärt. Weitere Details sind über den Link zu finden.

  • Nutzer G: Es war sehr faszinierend, Art Benjamin diese Technik in einem TED-Vortrag demonstrieren zu sehen. An seinen Handbewegungen konnte man die Zwischenschritte der Berechnung verfolgen.

  • Nutzer H: Berechnet mit Lewis Carrolls Methode den Wochentag für den 24. Mai 2024.

    • Beispiel:
      Jahrhundertwert: 6
      Jahreswert: 2
      Monatswert: 1
      Tageswert: 24
      Gesamtsumme: Freitag
      
  • Nutzer I: Teilt eine Methode zur Berechnung des Wochentags eines Datums mit Python-Code.

    def compute_day_of_week(date):
        day, month, year = date
        century = year // 100
        year_part = year % 100
    
        # Jahrhundertwert berechnen
        if year < 1752 or (year == 1752 and (month < 9 or (month == 9 and day < 14))):
            century_item = (18 - century) % 7
        else:
            century_item = ((3 - (century % 4)) * 2) % 7
    
        # Jahreswert berechnen
        year_item = (year_part + (year_part // 4)) % 7
    
        # Monatswert berechnen
        month_items = [0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5]
        month_item = month_items[month - 1]
    
        # Tageswert berechnen
        day_item = day % 7
    
        # Gesamtsumme
        total = (century_item + year_item + month_item + day_item) % 7
    
        # Schaltjahrkorrektur
        if month <= 2 and (year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)):
            total = (total - 1 + 7) % 7
    
        return total
    
    def day_of_week_string(day_index):
        days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
        return days[day_index]
    
    # Datumseingabe entgegennehmen
    date_input = input("Enter a date (yyyy-mm-dd): ")
    year, month, day = map(int, date_input.split('-'))
    date = (day, month, year)
    
    # Wochentag berechnen und ausgeben
    day_index = compute_day_of_week(date)
    day_name = day_of_week_string(day_index)
    print(f"The day of the week for {date_input} is {day_name}.")
    
  • Nutzer J: Betont, wie wichtig Notation in der Mathematik ist. Erwähnt, dass sie sowohl in der Mathematik als auch in der Informatik ein sehr wichtiger Faktor ist.

  • Nutzer K: Wenn man das in weniger als 20 Sekunden schaffen kann, ist das erstaunlich. Hat sich selbst nie als „schnellen Rechner“ betrachtet.