このディレクトリの索引

#  [14回演習問題2.1.1]整数のリストを第一引数に与え,そのリストの要素の中から、
#  和が15になるような3つの数を選ぶ述語fifteen/2をつくりなさい、
#  ただしあるひとつの組み合わせに関して、同じ数が重複してはいけない。
#  

fifteen(_整数のリスト,N1,N2,N3) :-
        setof(N,member(N,_整数のリスト),L),
        組合せ(L,3,[N1,N2,N3]),
        15 is N1 + N2 + N3.

組合せ(X,1,[A]) :-
    member(A,X) .
組合せ([A|Y],N,[A|X]) :-
    N > 1,
    M is N - 1,
    組合せ(Y,M,X).
組合せ([_|Y],N,A) :-
    N > 1,
    組合せ(Y,N,A).