プロジェクトオイラー問19

Problem 19 「日曜日の数え上げ」 †
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2019
指定された範囲の日曜日を数える問題。



ツェラーの公式で一発です。

zellers(Y,M,D,Result):-
	(M<3 -> M1 is M+12,Y1 is (Y-1) mod 100;M1 is M,Y1 is Y mod 100),
	C is Y1//100,
	Result is (D+(26*M1+26)//10+Y1+Y1//4-2*C+C//4) mod 7.

search(1):-
	between(1901,2000,Y),
  	between(1,12,M),
	zellers(Y,M,1,W),
	W=:=2.

main:-
	findall(W,search(W),Ws),
	length(Ws,Len),
	write(Len).
最終更新:2014年11月16日 11:09