2014年3月10日月曜日

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

Problem 8 「数字列中の最大の積」 

以下の1000桁の数字から5つの連続する数字を取り出して その積を計算する. そのような積の中で最大のものの値はいくらか.

詳細はリンク先参照のこと。
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%208


解法
Prolog言語
数字は改行を抜いてテキストエディタで文字列とした


max(A,B,B):-A<B,!.
max(A,_,A):-!.

to_num([],[]):-!.
to_num([X|Xs],[Y|Ys]):-
       !,
       Y is X-48,
       to_num(Xs,Ys).

calc([_,_,_,_],Max,Max):-!.
calc([X1,X2,X3,X4,X5|Rest],Max,Result):-
       !,
       Mult is X1*X2*X3*X4*X5,
       max(Max,Mult,Max1),
       calc([X2,X3,X4,X5|Rest],Max1,Result).

main8:-
       open('pe8.txt',read,IS),
       read_term(IS,Codes,[]),
       close(IS),
       to_num(Codes,Nums),
       calc(Nums,0,Ans),
       write(Ans).

0 件のコメント:

コメントを投稿