最初のほうのはみんな簡単ですね…歯ごたえあるやつまでとばしてやるかな…
プログラム:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
% 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.