ルイス・キャロル – 特定の日付の曜日を計算する技法 (1887)
(futilitycloset.com)ルイス・キャロルが提案した日付計算法
ルイス・キャロルが1887年3月31日に Nature に送った手紙:
次のような方法で、与えられた日付の曜日を暗算で求める方法を見つけたので、読者の興味を引くかもしれないと思い、お送りする。私は計算の速いほうではなく、平均するとこの種の問題を解くのに約20秒かかる。したがって、計算の速い人なら15秒もかからないと確信している。
計算方法
- 与えられた日付を4つの部分に分ける: 世紀、年、月、日。
- 次の4項目を計算し、各項目をそれまでの合計に加える。項目または合計が7を超えたら、7で割って余りだけを残す。
世紀の項目
- 旧暦式(1752年9月2日以前): 18から引く。
- 新暦式(1752年9月14日以後): 4で割り、3から余りを引き、その結果を2倍する。
- 例: 1811年の場合、世紀の項目は18。
年の項目
- 12の倍数、余り、余りの4分の1を足す。
月の項目
- 母音で始まるか終わる場合、その月の位置を10から引く。この値にその月の日数を足す。
- 例: 1月の項目は「0」、2月または3月は「3」、12月は「12」。
- 最終値: 1月 0、2月 3、3月 3、4月 6、5月 1、6月 4、7月 6、8月 2、9月 5、10月 0、11月 3、12月 5。
日の項目
- その月の日にち。
うるう年の調整
- うるう年の1月または2月であれば、最終合計から「1」を引く。合計が「0」の場合は、先に7を足す。
- うるう年: 4で割り切れる年。ただし新暦式では、世紀年が4で割り切れない場合を除く(例: 1800年)。
最終結果
- 最終結果は曜日を表す。「0」は日曜日、「1」は月曜日、以下同様。
例
1783年9月18日
- 世紀の項目: 17を4で割ると余りは「1」。3から1を引くと「2」。2を2倍すると「4」。
- 年の項目: 83は6ダースと11、合計17。2を足すと19、7で割ると「5」。総計9、7で割ると「2」。
- 月の項目: 8月の項目は「8を10から引いた値」、つまり「2」。9月の項目は「2に3を足した値」、つまり「5」。総計7、7で割ると「0」。
- 日の項目: 18は「4」。
- 最終結果: 「木曜日」。
1676年2月23日
- 世紀の項目: 16を18から引くと「2」。
- 年の項目: 76は6ダースと4、合計10。1を足すと11、7で割ると「4」。総計「6」。
- 月の項目: 2月の項目は「3」。総計9、7で割ると「2」。
- 日の項目: 23は「2」。総計「4」。
- うるう年の調整: 「3」。
- 最終結果: 「水曜日」。
(出典: Edward Wakeling, Rediscovered Lewis Carroll Puzzles, 1995.)
GN⁺の意見
- ルイス・キャロルの日付計算法は、数学的思考を鍛えるのに役立つ。
- この方法は、コンピュータなしでも日付を計算できる興味深い手法である。
- うるう年の計算のような細部を理解すれば、より正確な結果を得られる。
- 現代の暦計算と比べてみるのも面白いだろう。
- 数学パズルが好きな人にとっては、挑戦しがいのある問題になりうる。
1件のコメント
Hacker Newsの意見
Hacker Newsコメントまとめ要約
ユーザー A: この方法は私が使っている方法と非常によく似ており、Art Benjaminも使っているもの。10〜15秒以内にできますが、練習と少しの暗記、そして簡単な暗算が必要です。この技術を身につけるととても役に立ちます。
ユーザー B: JH Conwayは別の技法を使っており、現在の年の曜日を計算する際にはより速くて簡単です。しかし、別の年の"Doomsday"を計算するときは難しさがあり、基本の方法に戻ります。
ユーザー C: 1752年に起きた旧式と新式の日付の違いについて読んで興味深かったです。18世紀にはイギリスの法的な年は3月25日に始まっていました。
ユーザー D: 月番号の計算アルゴリズムを理解するのに苦労しています。各月の番号を計算する方法を説明し、自分の試みと記事で示された結果が一致しないことを指摘しています。
ユーザー E: Carrollのアルゴリズムは時間とともに進化してきました。最新の改善を含むFirst Sunday Doomsday Algorithmを紹介しています。
ユーザー F: より簡単な方法を説明したブログ記事を書きました。リンクから詳細を確認できます。
ユーザー G: Art BenjaminがTED講演でこの技術を実演しているのを見るのはとても興味深かったです。彼の手の動きから途中計算を追うことができます。
ユーザー H: Lewis Carrollの方法を使って2024年5月24日の曜日を計算しています。
ユーザー I: Pythonコードを使って日付の曜日を計算する方法を共有しています。
ユーザー J: 数学において表記法がどれほど重要かを強調しています。表記法が数学とコンピュータ科学で非常に重要な要素であると述べています。
ユーザー K: 20秒以内にこれができるなら驚くべきことです。自分を「速い計算機」だと思ったことはありません。