1 points par GN⁺ 2024-05-26 | 1 commentaires | Partager sur WhatsApp

La méthode de calcul de date proposée par Lewis Carroll

Lettre envoyée par Lewis Carroll à Nature le 31 mars 1887 :

J’ai découvert une méthode permettant de calculer mentalement le jour de la semaine d’une date donnée, et il m’a semblé qu’elle pourrait intéresser les lecteurs. Je ne suis pas un calculateur rapide, et il me faut en moyenne environ 20 secondes pour résoudre ce type de problème. Je suis donc convaincu qu’un calculateur rapide n’y mettrait pas même 15 secondes.

Méthode de calcul

  • Diviser la date donnée en 4 parties : le siècle, l’année, le mois et le jour.
  • Calculer les 4 éléments suivants, puis ajouter chacun au total précédent. Si un élément ou un total dépasse 7, le diviser par 7 et ne conserver que le reste.

Élément du siècle

  • Ancien style (avant le 2 septembre 1752) : soustraire à 18.
  • Nouveau style (après le 14 septembre 1752) : diviser par 4, soustraire le reste à 3, puis multiplier le reste par 2.
  • Exemple : pour l’année 1811, l’élément du siècle est 18.

Élément de l’année

  • Ajouter les multiples de 12, le reste et les multiples de 4 du reste.

Élément du mois

  • Si le nom commence ou se termine par une voyelle, soustraire la position du mois à 10. Ajouter à cette valeur le nombre de jours du mois correspondant.
  • Exemple : l’élément de janvier est 0, celui de février ou mars est 3, celui de décembre est 12.
  • Valeurs finales : janvier 0, février 3, mars 3, avril 6, mai 1, juin 4, juillet 6, août 2, septembre 5, octobre 0, novembre 3, décembre 5.

Élément du jour

  • Le numéro du jour du mois correspondant.

Ajustement pour les années bissextiles

  • S’il s’agit de janvier ou février d’une année bissextile, soustraire 1 du total final. Si le total vaut 0, ajouter d’abord 7.
  • Année bissextile : année divisible par 4, sauf dans le nouveau style si l’année séculaire n’est pas divisible par 4 (par ex. 1800).

Résultat final

  • Le résultat final indique le jour de la semaine. 0 correspond à dimanche, 1 à lundi, etc.

Exemples

18 septembre 1783

  • Élément du siècle : 17 divisé par 4 donne un reste de 1. 3 moins 1 donne 2. 2 multiplié par 2 donne 4.
  • Élément de l’année : 83 donne 6 douzaines et 11, soit 17 au total. Ajouter 2 donne 19, qui donne 5 modulo 7. Total général 9, soit 2 modulo 7.
  • Élément du mois : l’élément d’août est « 10 moins 8 », soit 2. L’élément de septembre est « 2 plus 3 », soit 5. Total 7, soit 0 modulo 7.
  • Élément du jour : 18 donne 4.
  • Résultat final : jeudi.

23 février 1676

  • Élément du siècle : 18 moins 16 donne 2.
  • Élément de l’année : 76 donne 6 douzaines et 4, soit 10 au total. Ajouter 1 donne 11, soit 4 modulo 7. Total général 6.
  • Élément du mois : l’élément de février est 3. Total 9, soit 2 modulo 7.
  • Élément du jour : 23 donne 2. Total 4.
  • Ajustement bissextile : 3.
  • Résultat final : mercredi.

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

L’avis de GN⁺

  • La méthode de calcul de date de Lewis Carroll est utile pour développer la pensée mathématique.
  • C’est une manière intéressante de calculer une date sans ordinateur.
  • Comprendre les détails, comme le calcul des années bissextiles, permet d’obtenir des résultats plus précis.
  • La comparer aux méthodes modernes de calcul de calendrier peut aussi être amusant.
  • Pour les amateurs de puzzles mathématiques, cela peut représenter un défi stimulant.

1 commentaires

 
GN⁺ 2024-05-26
Commentaires Hacker News

Résumé d’une sélection de commentaires Hacker News

  • Utilisateur A : Cette méthode est très proche de celle que j’utilise, et aussi de celle qu’utilise Art Benjamin. On peut le faire en 10 à 15 secondes, mais cela demande de l’entraînement, un peu de mémorisation et quelques calculs simples. Une fois cette technique maîtrisée, elle est très utile.

    • Exemple : calcul du jour de la semaine pour le 24 mai 2024
      12 ans depuis 2012
      3 années bissextiles
      numéro de mois magique 2
      date 24
      reste après division de la somme par 7 : vendredi
      
  • Utilisateur B : JH Conway utilisait une autre technique, plus rapide et plus simple pour calculer le jour de la semaine de l’année en cours. En revanche, elle est plus difficile pour calculer le "Doomsday" d’autres années, donc il revient à la méthode de base.

  • Utilisateur C : Il a trouvé intéressant de lire au sujet de la différence entre l’ancien et le nouveau calendrier en 1752. Au XVIIIe siècle, l’année légale en Angleterre commençait le 25 mars.

  • Utilisateur D : Il a du mal à comprendre l’algorithme de calcul des numéros de mois. Il explique comment il essaie de calculer le numéro de chaque mois et souligne que ses résultats ne correspondent pas à ceux présentés dans l’article.

  • Utilisateur E : L’algorithme de Carroll a évolué au fil du temps. Il présente le First Sunday Doomsday Algorithm avec ses améliorations les plus récentes.

  • Utilisateur F : Il a écrit un billet de blog décrivant une méthode plus simple. Les détails sont accessibles via le lien.

  • Utilisateur G : Il a trouvé très fascinant de voir Art Benjamin faire la démonstration de cette technique dans une conférence TED. On peut suivre les calculs intermédiaires grâce aux mouvements de ses mains.

  • Utilisateur H : Il calcule le jour de la semaine du 24 mai 2024 avec la méthode de Lewis Carroll.

    • Exemple :
      élément du siècle : 6
      élément de l’année : 2
      élément du mois : 1
      élément du jour : 24
      total : vendredi
      
  • Utilisateur I : Il partage une manière de calculer le jour de la semaine d’une date à l’aide de code Python.

    def compute_day_of_week(date):
        day, month, year = date
        century = year // 100
        year_part = year % 100
    
        # 세기 항목 계산
        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
    
        # 연도 항목 계산
        year_item = (year_part + (year_part // 4)) % 7
    
        # 월 항목 계산
        month_items = [0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5]
        month_item = month_items[month - 1]
    
        # 날짜 항목 계산
        day_item = day % 7
    
        # 총합
        total = (century_item + year_item + month_item + day_item) % 7
    
        # 윤년 보정
        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]
    
    # 날짜 입력 받기
    date_input = input("Enter a date (yyyy-mm-dd): ")
    year, month, day = map(int, date_input.split('-'))
    date = (day, month, year)
    
    # 요일 계산 및 출력
    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}.")
    
  • Utilisateur J : Il souligne à quel point la notation est importante en mathématiques. Il mentionne qu’elle constitue un élément essentiel en mathématiques comme en informatique.

  • Utilisateur K : Si quelqu’un peut faire cela en moins de 20 secondes, c’est impressionnant. Il ne s’est jamais considéré comme un « calculateur rapide ».