首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用CLPFD库限制可变域

不使用CLPFD库限制可变域
EN

Stack Overflow用户
提问于 2013-11-17 17:14:57
回答 1查看 518关注 0票数 0

我的程序中有一个变量列表,例如A、B、C、D、…、J,我需要将每个变量的域限制在相同的整数集合上,比如1、2、. 10。我知道几种不同的方法来实现这一点,但它们都至少使用了一种来自CLPFD的方法,例如X #> 0X ins [domain]fd_domain(args)。在没有任何内置库的情况下,我无法找到这样做的方法(这个项目禁止所有这些库)。

我认为这样的规则写就足够了:

代码语言:javascript
复制
A > 0, A < 11, B > 0, B < 11, ..., J > 0, J < 11

但显然这些变量没有被充分实例化。我知道这是一个非常简单的问题,但我已经自己搜索了一段时间,而且真的没有其他的帮助资源。非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-17 17:31:32

SWI中有between函数:

代码语言:javascript
复制
?- between(1, 9, A).
A = 1 ;
A = 2 ;
A = 3 ;
A = 4 ;
A = 5 ;
A = 6 ;
A = 7 ;
A = 8 ;
A = 9.

如果这也被禁止(这是不标准的),那么您可以使用member/2

代码语言:javascript
复制
?- member(A, [1, 2, 3, 4, 5, 6, 7, 8, 9]).
A = 1 ;
A = 2 ;
A = 3 ;
A = 4 ;
A = 5 ;
A = 6 ;
A = 7 ;
A = 8 ;
A = 9.

但是,如果没有CLP(fd),您将被困在生成和测试范例中,也许最好找到一些解决办法,以一种特殊的方式检查变量值,以获得良好的性能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20033675

复制
相关文章

相似问题

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