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

Problem 53 「組み合わせ選択」 †
パスカルの三角形の100段目までに100万を超える要素はいくつあるか答えよ。
int型でも100万以上は100万としても計算に支障ありません。
後は一段ずつ計算しながら集計するだけです。
まあPrologなんであまり意味はないですがね。


sum(L,R,1000000,1):-L+R>=1000000,!.
sum(L,R,M,0):-M is L+R,!.

calc_row([R],[R],Count,Count):-!.
calc_row([L,R|Rest],[M|ReRow],Count,ReCount):-
	sum(L,R,M,Add),
	Count1 is Count+Add,
	calc_row([R|Rest],ReRow,Count1,ReCount).

calc(101,_,Count):-!,write(Count).
calc(RowNo,Row,Count):-
 	calc_row(Row,Row1,Count,Count1),
	Row2=[1|Row1],
	RowNo1 is RowNo+1,
	calc(RowNo1,Row2,Count1).
main:-
	calc(1,[1],0).
最終更新:2014年12月07日 10:25