西暦(グリゴリオ歴)では、うるう年を次のように決めています。
➀西暦年号が4で割り切れる
➁ただし、例外として、西暦年号が100で割り切れ、かつ400で割り切れない年は
平年とする
このように、うるう年の定義はアルゴリズムとして表現されています。
従って、うるう年の判定は素直に演算式で表わすことができ、次のようになります。
(Y%4 == 0)and not((Y%100 == 0)and(Y%400 != 0)) (Yは西暦年号)
うるう年を判定するプログラムは、
if ((Y%4 == 0)and not((Y%100 == 0)and(Y%400 != 0)))
# うるう年である
else
# うるう年ではない
end
となります。
上の演算式は複雑ですが、これは論理演算を用いて、次のように簡単化できます。
(Y%400 == 0)or(Y%4 == 0)and(Y%100 != 0)
この演算式を使えば、判定プログラムは少し簡潔になります。
if ((Y%400 == 0)or(Y%4 == 0)and(Y%100 != 0))
# うるう年である
else
# うるう年ではない
end
※1ここで用いたifや演算式については「ビットから始めるプログラミング」で定義しています。※
※2また、
複雑な式:(Y%4 == 0)and not((Y%100 == 0)and(Y%400 != 0))を簡潔にする論理演算についてもifの例として「ビットから始めるプログラミング」で述べています。※