10/01/29 19:14:34
>>498
% Prolog
'1月1日が金曜日の平年(たとえば2010年)について、月日の入力データから、曜日を求める' :-
催促付き整数入力('月を入力してください:',_月),
催促付き整数入力('日を入力してください:',_日),
曜日を求める(_月,_日,_曜日),
write_formatted('%t月%t日は%t日です\n',[_月,_日,_曜日]),!.
曜日を求める(_月,_日,_曜日) :- 曜日を求める(1,1,_月,_日,金曜,_曜日).
曜日を求める(_月,_日,_月,_日,_曜日,_曜日) :- !.
曜日を求める(_月1,_日1,_月,_日,_曜日1,_曜日) :-
翌日(_月1,_日1,_翌日の月,_翌日の日),
曜日連鎖(_曜日1,_曜日2),
曜日を求める(_翌日の月,_翌日の日,_月,_日,_曜日2,_曜日).
翌日(2,28,3,1) :- !.
翌日(_月,30,_翌日の月,1) :- member(_月,[4,6,9,11]),_翌日の月 is _月 + 1,!.
翌日(_月,31,_翌日の月,1) :- member(_月,[1,3,5,7,8,10,12]),_翌月の月 is _月 + 1,!.
翌日(_月,_日,_月,_翌日の日) :- _翌日の日 is _日 + 1.
曜日連鎖(月曜,火曜).
曜日連鎖(火曜,水曜).
曜日連鎖(水曜,木曜).
曜日連鎖(木曜,金曜).
曜日連鎖(金曜,土曜).
曜日連鎖(土曜,日曜).
曜日連鎖(日曜,月曜).