误区链/ 2?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了误区链/ 2?相关的知识,希望对你有一定的参考价值。

如果我有(加载clpfd):

test1(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([W1,W2,W3,W4],#<).

并查询:

?-test1(P).
P = [(a,1,1), (b,2,2), (c,3,1), (d,4,2)]
false

这给出了我期望的一个答案,但是:

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],#<).

查询:

?-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)]

带有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,因此满足链约束。

以上是关于误区链/ 2?的主要内容,如果未能解决你的问题,请参考以下文章

Gartner:区块链项目最常见的七大误区

区块链开发从歪曲的比特币谈区块链应用及误区

科普 | 误区太多,大多数人并不理解区块链是怎么回事?

什么叫区块链

JavaScript笔试题(js高级代码片段)

Python切片中的误区与高级用法