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

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

HOME > Archives > Standard

手順

西暦(グレゴリオ暦)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後 参照。

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

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

(手続き終わり)