指で数えて曜日を当てる方法

What day of the week is it? For calendar calculating like savant syndrome.

HOME > Archives > Beginner

手順

西暦(グレゴリオ暦)1582年10月15日以降の曜日を知りたい日付に対して, その日付の年の下4桁をY, 月をM, 日をDとする.

M < 3の場合は, Y’ = Y - 1(ただし, Y = 0のときはY’ = 9999), M' = M + 12. M ≥ 3の場合は, Y’ = Y, M' = M とする.

以下の手続きを実行して,最後に押さえている位置が0, 1, …, 6のとき,水, 木, …, 火が目的の曜日.

補足:
左手の人差し指, 中指, 薬指にある関節で区切られた位置のうち7つに次のような番号をつける. 人差し指先から0, 1, 2. 中指先から3, 4, 5. 薬指の先は6. 整数a,b, 0≤a<7, 0≤b<7について, 位置aのb後とは, 位置(a+b)%7を指す. ただし,整数c,d(d≠0)に対して, cをdで割った余りをc%dと書く. 詳しくは, n後 参照。

指で数えて曜日を当てる方法 ”Beginner”:

Step 1
0を押さえて, Y'以下で最大の400の倍数を数える.
Step 2
Y'を超えない限り, 100ずつ足した数を数える. ただし, 数を数えるごとに, 押さえている位置は, 5後へ移動させる.
Step 3
Y'を超えない限り, 20ずつ足した数を数える. ただし, 数を数えるごとに, 押さえている位置は, 4後へ移動させる.
Step 4
Y'を超えない限り, 4ずつ足した数を数える. ただし, 数を数えるごとに, 押さえている位置は, 5後へ移動させる.
Step 5
Y'を超えない限り, 1ずつ足した数を数える. ただし, 数を数えるごとに, 押さえている位置は, 1後へ移動させる.
Step 6
0後を押さえて, 3と数える.
Step 7
M'を超えない限り, 5ずつ足した数を数える. ただし, 数を数えるごとに, 押さえている位置は, 6後へ移動させる.
Step 8
M'を超えない限り, 2ずつ足した数を数える. ただし, 数を数えるごとに, 押さえている位置は, 5後へ移動させる.
Step 9
M'を超えない限り, 1ずつ足した数を数える. ただし, 数を数えるごとに, 押さえている位置は, 3後へ移動させる.
Step 10
0後を押さえて, 1と数える.
Step 11
Dを超えない限り, 7ずつ足した数を数える. ただし, 数を数えるごとに, 押さえている位置は, 0後へ移動させる.
Step 12
Dを超えない限り, 1ずつ足した数を数える. ただし, 数を数えるごとに, 押さえている位置は, 1後へ移動させる.

(手続き終わり)