- 381 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 14:14:42 ]
- >>380
% Prolog t380 :- get_line(Line),atom_to_term(Line,Nissu,_), 'N日後は'(0,Nissu,2009/1/1,_年/_月/_日), write_formatted('%t月%t日\n',[_月,_日]). 'N日後は'(N,N,_年/_月/_日,_年/_月/_日). 'N日後は'(M,N,_年_1/_月_1/_日_1,_年/_月/_日) :- 前日・今日(_年_1/_月_1/_日_1,_年_2/_月_2/_日_2), M2 is M + 1, 'N日後は'(M2,N,_年_2/_月_2/_日_2,_年/_月/_日). 前日・今日(_前日の年 / 12 / 31,_年 / 1 / 1) :- 一つ違い(_前日の年,_年),!. 前日・今日(_年 / 2 / 29,_年 / 3 / 1) :- うるう年(_年),!. 前日・今日(_年 / 2 / 28,_年 / 3 / 1) :- \+(うるう年(_年)),!. 前日・今日(_年 / _前月 / 30,_年 / _月 / 1) :- 一つ違い(_前月,_月),member(_前月,[4,6,9,11]),!. 前日・今日(_年 / _前月 / 31,_年 / _月 / 1) :- 一つ違い(_前月,_月),member(_前月,[1,3,5,7,8,10,12]),!. 前日・今日(_年 / _月 / _前日,_年 / _月 / _日) :- 一つ違い(_前日,_日),!. うるう年(_年) :- 0 is _年 mod 400,! . うるう年(_年) :- 0 is _年 mod 100,!,fail. うるう年(_年) :- 0 is _年 mod 4,!. うるう年(_年) :- \+(0 is _年 mod 4),fail. 一つ違い(M,N) :- integer(M),!,N is M + 1 . 一つ違い(M,N) :- integer(N),!,M is N - 1 .
|

|