うるう年の判定

西暦(グリゴリオ歴)では、うるう年を次のように決めています。

➀西暦年号が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の例として「ビットから始めるプログラミング」で述べています。※