このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1276873238/707
#  問題 
#  明日が何曜日なのか表示せよ。 
# 
%
% SWI-Prologで明日はどうやって取得するのか。今日は date/1 で取得できる。
% 

'明日が何曜日なのか表示せよ。' :-
        date(date(_今日の年,_今日の月,_今日の日)),
        翌日(_今日の年,_今日の月,_今日の日,_翌日の年,_翌日の月,_翌日の日),
        day_of_the_week(date(_翌日の年,_翌日の月,_翌日の日),_曜日番号),
        nth0(_曜日番号,[日曜,月曜,火曜,水曜,木曜,金曜,土曜],_曜日),
        writef('%t',[_曜日]).

翌日(_今日の年,12,31,_翌日の年,1,1) :-
        _翌日の年 is _今日の年 + 1,!.
翌日(_年,_今日の月,_今日の日,_年,_翌日の月,1) :-
        月末日(_年,_今日の月,_今日の日),
        _翌日の月 is _今日の月 + 1,!.
翌日(_年,_月,_今日の日,_年,_月,_翌日の日) :-
        _翌日の日 is _今日の日 + 1.

月末日(_,2,29) :- !.
月末日(_年,2,28) :- \+(うるう年(_年)),!.
月末日(_,_今日の月,31) :- !.
月末日(_,_今日の月,30) :- member(_今日の月,[4,6,9,11]),!.

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