このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1274827528/880
#  [1] 授業単元:計算機とアルゴリズム  
#  [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10699.txt  
# 
# 問題2
# 
# 整数変数 year に西暦の値を収め、そのときがうるう年かどうか判定するプログラムを作成しなさい。
# 例として、2000年の場合と1900年の場合の実行結果例を示す。
# 
# 実行結果(2000年の場合)
# 
# 2000 年がうるう年かどうか判定します
# うるう年です
# 
# 
# 実行結果(1900年)の場合
# 
# 1900 年がうるう年かどうか判定します
# うるう年ではありません
# 

:- op(750,xf,年がうるう年かどうか判定します).

_year 年がうるう年かどうか判定します :-
        integer(_year),
        うるう年(_year),
        write('うるう年です\n'),!.
_year 年がうるう年かどうか判定します :-
        integer(_year),
        write('うるう年ではありません\n').

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'整数変数 year に西暦の値を収め、そのときがうるう年かどうか判定する'
        催促付き整数入力('西暦の値を入力してください : ',_year),
        うるう年(_year),
        write('うるう年です\n'),!.
'整数変数 year に西暦の値を収め、そのときがうるう年かどうか判定する' :-
        write('うるう年ではありません\n').

うるう年(_年) :- 0 is _年 mod 400,!.
うるう年(_年) :- 0 is _年 mod 100,!,fail.
うるう年(_年) :- 0 is _年 mod 4,!.
うるう年(_年) :- \+(0 is _年 mod 4),fail.