首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向global_cardinality中添加域变量?

如何向global_cardinality中添加域变量?
EN

Stack Overflow用户
提问于 2013-05-06 13:27:05
回答 2查看 396关注 0票数 3

我试图在我的程序中添加一个约束global_cardinality,并在SICStus Prolog手册中编写:

global_cardinality(+Xs +Vals) global_cardinality(+Xs,+Vals,+选项) 其中,Xs = X1,.,Xd是整数或域变量的列表,Vals = K1-V1,.,Kn是一对的列表,其中每个键Ki是唯一的整数,Vi是域变量或整数。如果Xs的每个元素都等于某个键,对于每对Ki,则Xs的Vi元素完全等于Ki。

现在我可以写了:

代码语言:javascript
复制
global_cardinality([A,B,C], [1-2, 2-1]).

要说数字1将被使用两次。数字2只使用一次。

但是我想说的是,1这个数字将被使用:once, twice or three times

根据手册,我需要一个域变量,但是正确的语法是什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-06 14:03:56

不确定,但是从SWI-Prolog 页面我想您可以尝试一下。

代码语言:javascript
复制
...global_cardinality([A,B,C], [1-X, 2-1]), (X #= 1 #\/ X #= 2 #\/ X #= 2)...

代码语言:javascript
复制
?- global_cardinality([A,B,C], [1-X, 2-1]), X in 1..3, label([A,B,C]).
A = B, B = 1,
C = X, X = 2 ;
A = C, C = 1,
B = X, X = 2 ;
A = X, X = 2,
B = C, C = 1.
票数 1
EN

Stack Overflow用户

发布于 2013-05-06 15:28:46

代码语言:javascript
复制
?- X in 1..3, global_cardinality([A,B,C], [1-X, 2-1]).
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16399792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档