「夜中の思索:眠れない理由とカレンダー計算の謎」

 眠れないためこうして日記を書いております。
現在時刻は午前3時38分。
明日目医者に行くのに徹夜するのはまずいかと思ったのですが、眠れないんだからしょうがありません。
ってか俺としてはかなり寝たいんだけど、なぜか知りませんがぜんぜん眠れません。
おそらく原因はいろいろあると思われますが、簡単に挙げてみましょう。
1.JAWSでそこそこ実用的なスクリプトが書けたので、続きを書きたがっている
2.カレンダーの計算を数学的にやる方法はないだろうかと考えている
3.眠れないのでテレビでも付けてみようと思ってNHKをかけたら、漫才をやっていてついついみてしまったので、活性化してしまった
 俺としては1.と2.辺りが怪しいのです。
特に2.というのは気になったら結論を出すまで気になりっぱなしで気持ち悪いんです。
 カレンダーの計算というのは、つまり、x年後の今日は何曜日であるかを求める方程式をどうやって作ればいいか、という問題のことです。
これは何もどこかの本に書いてあったわけじゃなくて、なんとなくこれってどうやるんだろうと勝手に俺が思っただけなんですが…
 まず、一般的には同じ月日でも、年を重ねるごとに1日ずつずれていきます。
たとえば、2005年2月16日は水曜日でしたが、2006年2月16日は木曜日になります。
うそだと思ったら来年のカレンダーを見てみてください。カレンダーがなければ、パソコンの日付を2006年2月16日にしてみればいいです。
ということで、単純には+1ずつしていけばいいのです。
 でも、これでは何に+1ずつしていくべきかというのに困ってしまいます。
 求めたいのは曜日なわけで、これを扱いやすいように数字に変換しましょう。
日曜日を0として、月曜日を1,…,土曜日を6としましょう。
すると日曜日から土曜日までを0〜6の7つの数字で表すことができます。
つまり7進法です。
 これで曜日を数字として扱えるので方程式を立てることができるようになりました。
 実際に立ててみましょう。今日をA曜日だとして、x年後の曜日をy曜日とすると、
y=a+x
という式が成り立ちます。なんとスマートな式でしょう。
 しかしこれで安心してはいけません。
aというのは7進数で考えていますが、xは10進数です。(年は10進数ですよね?)
したがってどちらかをどちらかに合わせる必要があるのですが、この場合は曜日を求めたいのでxを7進数に変換する必要があります。
 ではこれはどうやるのでしょう。
この方法が実在するかどうかは知りませんが、仮に存在するとしたら調べればすぐ分かるところです。
ところが、カレンダーに閏年があります。
これを導入しても、単に閏年だけ1日多くなるだけなので場合分けすれば良さそうに思えるでしょうが、x年後が閏年であるかを判定することは容易でも、それをどうやって増分に反映するかとか、2月29日より舞えと後では若干計算が変わってくるので、非常にややこしくなります。
 ということを考えていたら眠れなくなった可能性が非常に高いです。
ただ、これをずっと1時間ほど考えていましたが、はっきりいって無駄な悩みのようですね〜(^^;;
 ということで、たぶん徹夜で病院行ってきます(^O^)