西暦から十二支を素早く求める

覚え書きページの本宅に戻る

1. 左手の計算

  1. 西暦の先頭1桁を見て、その値を3で割ったあまりを左手に作る。
  2. 次の桁を見て、その値を3で割ったあまりを左手に足し込んでいく。ただし、足し込む際には以下のルール(3進数)に従う。つまり、結果は常に0、1、2のいずれかとなる。
  3. すべての桁を処理するまで、2を繰り返す。

別法

2. 右手の計算

  1. 西暦の下2桁だけを使用する。まず、右手で「グー」を作る。
  2. 西暦の下2桁が奇数であれば、親指を立て、下2桁に1を足す。
  3. 西暦の下2桁が偶数であれば、人差し指を開く。

[*1] ちなみに奇数の際に親指を立てるのは、下2桁に1を加算することを忘れないようにするための「きっかけ」に過ぎず、親指は結果の手のかたちとはまったく関係ない。

図解--右手の遷移図

下2桁は奇数か偶数か?
→→→→→
奇数
下2桁に1を足し、
2で割った値は奇数か偶数か?
→→→→→
奇数
指を2本足す
↓  ↓偶数
何もしない
↓偶数
↓  
2で割った値は奇数か偶数か?
→→→→→
奇数
指を2本足す
↓偶数
何もしない

3. 結果の見方(形で憶えると西暦から数秒で十二支を求められるようになる)

ちょっとした考察

 子は両手がそれぞれ1と1、以降は丑、寅、卯・・・と順番に左手は「0, 1, 2, 0, 1, 2, ・・・」の繰り返し、右手は「0, 1, 2, 3, 0, 1, 2, 3, ・・・」の繰り返しとなる。

 式で書くと、(((左手+3)−右手) mod 3)×4+右手 となる(答えは1が子、2が丑、3が寅、・・・0が亥となる/なお mod は剰余を求める演算子)。

覚え書きページの本宅に戻る