との間のすべての整数のリストを生成します。作品のclpfd - 私はclpfd 5と10の間のすべての異なる整数のリストを生成取得するSWI-Prologので働いて5と10
q1(Answer) :-
length(Xs, Answer),
Xs ins 0..20,
chain(Xs, #<),
maplist(q1constraints, Xs).
q1constraints(X) :-
X #>= 5,
X #=< 10.
種類を、しかし、 ...、長さ0、1のそれぞれの解を生成する6、その後、長さ7のソリューションを求めているハング:
?- q1(Answer).
Answer = 0 ;
Answer = 1 ;
Answer = 2 ;
Answer = 3 ;
Answer = 4 ;
Answer = 5 ;
Answer = 6 ;
<hangs>
満足すべて整数のリストを生成するための良い方法はあります希望の制約?ここで
リスト?または、バックトラッキングで生成しますか?そして、あなたは「別れた」という意味はどういう意味ですか?なぜ「長さ/ 2」ですか?なぜ 'ins 0..20'ですか?私はあなたが何をしようとしているのかを説明していないと感じています。 –
私は制約から、リスト[5,6,7,8,9,10]を生成し、そこにいくつの要素があるのかを数えたいと思います。制約条件はもっと豊富かもしれません。たとえば、「偶数」制約のフォームを追加したい場合があります。「X mod 2#= 0」が生成され、[6、8、10]が生成されます。リスト演算子はもっと豊富かもしれません。例えば、 "count"の代わりに "sum"と言ってもいいかもしれません。 –
PS。私は[5、5、5、5、5、6]のようなリストは気にしません。 –