最初のほうのはみんな簡単ですね…歯ごたえあるやつまでとばしてやるかな…
プログラム:
% problem 6 solve:- make_list(100,L), calc_pow2_sum(L,PowSum), calc_sum(L,Sum), SumPow is Sum * Sum, Ans is SumPow - PowSum , write(Ans). calc_pow2_sum([],0):-!. calc_pow2_sum([First|Rest],PowSum):- FirstPow is First * First, calc_pow2_sum(Rest,PowSumRest), PowSum is FirstPow + PowSumRest. calc_sum([],0):-!. calc_sum([First|Rest],Sum):- calc_sum(Rest,RestSum), Sum is First + RestSum. % 1 ~ Idx までのリストを作成 make_list(Idx,List):- make_list_sub(Idx,List,[]). make_list_sub(0,Ret,Ret):-!. make_list_sub(Idx,Ret,List):- Idx1 is Idx - 1, make_list_sub(Idx1,Ret,[Idx | List]).
実行結果:
1 ?- solve.
***********************(解答伏せます)**********************
true.
コメントを残す