2014年3月11日火曜日

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

Problem 13 「大数の和」 

以下の50桁の数字100個の和の上位10桁を求めよ.
以下略
詳細はリンク先参照のこと。
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2013



解法
Prolog言語。
データはpe13.txtとして、リスト形式に変換してから読み込んだ。

sum([],0):-!.
sum([X|Xs],Result):-sum(Xs,Re),Result is Re+X.

myprint(_,11):-!.
myprint([X|Xs],Keta):-
      N is X-48,
      write(N),
      Keta1 is Keta+1,
      myprint(Xs,Keta1).

myread(FN):-
      open(FN,read,IS),
        read_term(IS,A,[]),
      sum(A,Ans),
      number_codes(Ans,Ans1),
      myprint(Ans1,1),
      close(IS).

main13:-myread('pe13.txt').

0 件のコメント:

コメントを投稿