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

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2042
Problem 42 「符号化三角数」 †
単語の書かれたテキストファイルを読み込み単語のスコアを指定された方法で計算する。
スコアが三角数になる単語の数を答えよ。


テキストファイルをリストにして読み込み計算していくだけです。
is_delta(N,_):-N<0,!,fail.
is_delta(0,_):-!.
is_delta(N,D):-
	N1 is N-D,
	D1 is D+1,
	is_delta(N1,D1).


score([],Score,Score):-!.
score([X|Xs],Score,Result):-
	Score1 is X-64+Score,
	score(Xs,Score1,Result).

count(Words,1):-
	member(E,Words),
	score(E,0,S),
	is_delta(S,1).

myread(FN):-
 open(FN,read,IS),
 read_term(IS,Words,[]),
 close(IS),
 findall(E,count(Words,E),Es),
 length(Es,Ans),
 write(Ans).

main:-myread('pe42.txt').
最終更新:2014年12月05日 02:25