このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1284632294/800
#  [1] 授業単元:プログラミング実習  
#  [2] 問題文(含コード&リンク):入力された1〜2010の範囲において閏年を判断するプログラムを作成せよ。  
#  閏年の場合、閏年と表示。 
#  閏年でない場合、平年と表示。 
#  1〜2010の範囲外であるときは判定不可と表示するようにする。 
#  ルール: 
#  入力された値が4の倍数のとき、あるいは400の倍数のときは閏年であり、 
#  入力された値が100の倍数のとき(100,200,300,500・・・など)は閏年ではない。 
#   
#  

'入力された1〜2010の範囲において閏年を判断する' :-
        '1〜2010の範囲の値を入力する'(_値),
        '閏年の場合、閏年と表示。閏年でない場合、平年と表示。'(_値).

'1〜2010の範囲の値を入力する'(_値) :-
        get_line(Line),
        診断(Line,_値),!.
'1〜2010の範囲の値を入力する'(_値) :-
        '1〜2010の範囲の値を入力する'(_値).

診断(Line,_値) :-
        atom_to_term(Line,_値,_),
        integer(_値),!.
診断(Line,_値) :-
        write_formatted('入力された %t は整数ではありません\n再入力をお願いします\n',[Line]).

'閏年の場合、閏年と表示。閏年でない場合、平年と表示。'(_値) :-
        '閏年の場合、閏年と表示。閏年でない場合、平年と表示。'(_値,_閏年か平年か),
        write_formatted('%t\n',[_閏年か平年か]),

'閏年の場合、閏年と表示。閏年でない場合、平年と表示。'(_値,判定不可) :-
        \+((_値 >= 0,_値 =< 2010)),!.       
'閏年の場合、閏年と表示。閏年でない場合、平年と表示。'(_値,閏年) :- 閏年(_値),!.
'閏年の場合、閏年と表示。閏年でない場合、平年と表示。'(_値,平年) :- \+(閏年(_値)),!.

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