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

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

HOME > Archives > Mutant

手順

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

M < 3の場合は,Y’ = Y - 1(ただし,Y = 0のときはY’ = 9999),M ≥ 3の場合は,Y’ = Yとして,Y’の上2桁をC, Y’の下2桁をNとする.(例えば, Y' = 1234のときは, C = 12, N = 34. )

以下の手続きを実行して,最後に押さえている位置が0, 1, …, 6のとき,日, 月, …, 土が目的の曜日.ただし,整数a,b(b≠0)に対して,aをbで割った余りをa%bと書く.

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

指で数えて曜日を当てる方法 ”Mutant (仮)”:

Step 1
0を押さえる.
Step 2
Mに対応する数(Table 1)後に移動する.
Step 3
D%7後に移動する.
Step 4
C%4に対応する数(Table 2)後に移動する.
Step 5
N以下で最大の4の倍数をnとして,nに対応する数(Table 3)後に移動する.
Step 6
N%4後に移動する.

(手続き終わり)

     Table 1
1 2 3 4 5 6 7 8 9 10 11 12
0 3 2 5 0 3 5 1 4 6 2 4

     Table 2
0 1 2 3
0 5 3 1

     Table 3
0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96
0 5 3 1 6 4 2 0 5 3 1 6 4 2 0 5 3 1 6 4 2 0 5 3 1