このディレクトリの索引
#  prologについてです。
#  2乗和のプログラムが書けなくて困っています。1からXまでの2乗和Yを計算するプログラムssq(X,Y)を”一切isを用いず”に作成していただけないでしょうか?よろしくお願いします。

'2乗和のプログラムが書けなくて困っています。
1からXまでの2乗和Yを計算するプログラムssq(X,Y)を”一切isを用いず”に作成していただけないでしょうか?
よろしくお願いします。'(X,Y) :-
        ssq(X,Y).

ssq(X,Y) :-
        '1からXまでの2乗和Yを"一切isを用いず"に計算する'(X,Y).


'1からXまでの2乗和Yを"一切isを用いず"に計算する'(X,_2乗和Y) :-
        '2乗和をリストとして表現する(ただしリストは平坦化されていない)'(X,_2乗和リスト表現),
        リストを平坦化してその要素数を数える(_2乗和リスト表現,_2乗和Y).

'2乗和をリストとして表現する(ただしリストは平坦化されていない)'(X,_2乗和リスト表現) :-
        findall(LL,(
                    '1からXまでの整数を要素数とするリストLを生成する'(X,L),
                    リストによって2乗を表現する(L,LL)),
                _2乗和リスト表現).

'1からXまでの整数を要素数とするリストLを生成する'(X,L) :-
        between(1,X,N),
        length(L,N).

リストによって2乗を表現する(L1,LL) :-
        findall(L1,nth1(_,L1,_),LL).

リストを平坦化してその要素数を数える(LL,_要素数) :-
        flatten(LL,L),
        length(L,_要素数).