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