このディレクトリの索引
http://arc002.contest.atcoder.jp/tasks/arc002_1
#  AtCoder Regular Contest #002
#  A - うるう年
#  時間制限 : 2sec / スタック制限 : 10MB / メモリ制限 : 64MB
#  
#  問題文
#  
#  高橋君は忘れっぽい性格なので、うるう年は 2 月 29 日の存在を毎回忘れてしまいます。
#  そこで、自動でうるう年かどうかをコンピュータに教えてもらえるようにしたいと思います。
#  入力として与えられた年がうるう年かそうでないかを判断しなさい。
#  
#  ただし、うるう年は以下の規則で決定します。
#  規則 1:4 で割り切れる年はうるう年である。
#  規則 2:100 で割り切れる年はうるう年ではない。
#  規則 3:400 で割り切れる年はうるう年である。
#  規則 4:規則 1〜3 のいずれも満たさない場合は,うるう年ではありません。
#  ただし、規則 1 〜 3 の内に複数満たすものがあれば後の規則(数字の大きな規則)が優先されます。 例えば、2000 年は規則 3 を満たすのでうるう年です。
#  2100 年は規則 2 を満たしますが、規則 3 を満たさないのでうるう年ではありません。

うるう年(_年) :-
        '規則 4:規則 1〜3 のいずれも満たさない場合は,うるう年ではありません。'(_年),!,
        fail.
うるう年(_年) :-
        'ただし、規則 1 〜 3 の内に複数満たすものがあれば後の規則(数字の大きな規則)が優先されます。'(_年).



'規則 4:規則 1〜3 のいずれも満たさない場合は,うるう年ではありません。'(_年) :-
        \+('規則 1:4 で割り切れる年はうるう年である。'(_年)),
        \+('規則 3:400 で割り切れる年はうるう年である。'(_年)),
        \+('規則 2:100 で割り切れる年はうるう年ではない。'(_年)).

'規則 1:4 で割り切れる年はうるう年である。'(_年) :-
        0 =:= _年 mod 4.

'規則 2:100 で割り切れる年はうるう年ではない。'(_年) :-
        0 =:= _年 mod 100.

'規則 3:400 で割り切れる年はうるう年である。'(_年) :-
        0 =:= _年 mod 400.


'ただし、規則 1 〜 3 の内に複数満たすものがあれば後の規則(数字の大きな規則)が優先されます。'(_年) :-
        '規則 3:400 で割り切れる年はうるう年である。'(_年).
'ただし、規則 1 〜 3 の内に複数満たすものがあれば後の規則(数字の大きな規則)が優先されます。'(_年) :-
        '規則 2:100 で割り切れる年はうるう年ではない。'(_年),!,
        fail.
'ただし、規則 1 〜 3 の内に複数満たすものがあれば後の規則(数字の大きな規則)が優先されます。'(_年) :-
        '規則 1:4 で割り切れる年はうるう年である。'(_年).