Prolog 误解链/2?
如果我有(加载clpfd): 正如我所料,这给出了一个答案,但是:Prolog 误解链/2?,prolog,clpfd,Prolog,Clpfd,如果我有(加载clpfd): 正如我所料,这给出了一个答案,但是: test2(Ps):- permutation(Ps,[(a,1,1),(b,2,2),(c,3,1),(d,4,2)]), Ps =[(L1,W1,X1),(L2,W2,X2),(L3,W3,Y1),(L4,W4,Y2)], chain([X1,X2],#<). 我不希望得到这样的答案: P = [(c,3,1), (b,2,2), (d,4,2), (a,1,1)] P = [(c,3,1
test2(Ps):-
permutation(Ps,[(a,1,1),(b,2,2),(c,3,1),(d,4,2)]),
Ps =[(L1,W1,X1),(L2,W2,X2),(L3,W3,Y1),(L4,W4,Y2)],
chain([X1,X2],#<).
我不希望得到这样的答案:
P = [(c,3,1), (b,2,2), (d,4,2), (a,1,1)]
P = [(c,3,1), (d,4,2), (b,2,2), (a,1,1)]
其中as的条款在bs的条款之后。
我误解了什么?我现在可以看出我做错了什么 答案如下:
P = [(c,3,1), (b,2,2), (d,4,2), (a,1,1)]
P = [(c,3,1), (d,4,2), (b,2,2), (a,1,1)]
显然,前两个元素的第三个参数中有1和2,因此满足链约束
?-test2(P):-
P = [(a,1,1), (b,2,2), (c,3,1), (d,4,2)]
P = [(a,1,1), (b,2,2), (d,4,2), (c,3,1)]
P = [(a,1,1), (d,4,2), (b,2,2), (c,3,1)]
P = [(a,1,1), (d,4,2), (c,3,1), (b,2,2)]
P = [(c,3,1), (b,2,2), (a,1,1), (d,4,2)]
P = [(c,3,1), (d,4,2), (a,1,1), (b,2,2)]
P = [(c,3,1), (b,2,2), (d,4,2), (a,1,1)]
P = [(c,3,1), (d,4,2), (b,2,2), (a,1,1)]
false
P = [(c,3,1), (b,2,2), (d,4,2), (a,1,1)]
P = [(c,3,1), (d,4,2), (b,2,2), (a,1,1)]
P = [(c,3,1), (b,2,2), (d,4,2), (a,1,1)]
P = [(c,3,1), (d,4,2), (b,2,2), (a,1,1)]