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').
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 件のコメント:
コメントを投稿