このディレクトリの索引

# 出典 :: Python の宿題ここで答えます Part 1 #900 # 3つの自然数の合計が10になるような組み合わせを # すべて列挙するプログラムを書け # 1+1+8と1+8+1のように並び順が異なるだけのものは # 同一と考え、重複して出力しないようにすることが望ましい '3つの自然数の合計が10になるような組み合わせを すべて列挙するプログラムを書け 1+1+8と1+8+1のように並び順が異なるだけのものは 同一と考え、重複して出力しないようにすることが望ましい' :- forall('3つの自然数の合計が10になる'(_1,_2,_3),writef('%w + %w + %w\n',[_1,_2,_3])). '3つの自然数の合計が10になる'(_1,_2,_3) :- 重複組合せ([1,2,3,4,5,6,7,8,9,10],3,[_1,_2,_3]), 10 is _1 + _2 + _3. 重複組合せ(L,1,[A]) :- member(A,L). 重複組合せ([A|Y],N,[A|X]) :- N > 1, M is N - 1, 重複組合せ([A|Y],M,X). 重複組合せ([_|Y],N,A) :- N > 1, 重複組合せ(Y,N,A).