首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clingo:按照规则放置元素

clingo:按照规则放置元素
EN

Stack Overflow用户
提问于 2019-02-18 16:21:30
回答 1查看 143关注 0票数 1

你好,我想了解更多关于clingo的知识,有这样的术语: v(1,2).v(2,1).v(3,4).v(4,3),这意味着第一个元素不能在第二个元素的同一行,第二个元素不能在第一个元素ecc中。想要写一些规则来找到一个矩阵2x2,其中元素(I,J,N)是根据这个限制放置的。提前感谢

代码语言:javascript
复制
v(1,2).v(2,1).v(3,4).v(4,3)
rows(1..2).
col(1..2).
1{m(I,J,N) : v(N)}1 :- rows(I), col(J).  
1{m(I,J,N) : rows(I), col(J)}1 :- v(N).
...code...
output 
[1,1,1][1,2,4][2,1,2][2,2,3]
[1,1,4][1,2,1][2,1,2][2,2,3]
[1,1,1][1,2,4][2,1,3][2,2,2]
[1,1,4][1,2,1][2,1,3][2,2,2]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-19 07:44:09

第一条规则

1{m(I,J,N) : v(N)}1 :- rows(I), col(J).

将矩阵的每个位置设为一个v(N),但没有定义v(N),则定义了v(N,M)。

第二条规则

代码语言:javascript
复制
1{m(I,J,N) : rows(I), col(J)}1 :- v(N).

将每个v(N)准确地放在一行和列中。

我建议你用w(X)代替v(X),然后定义

代码语言:javascript
复制
w(N) :- v(N,_).
w(N) :- v(_,N).

这意味着从v(X,Y)到w得到所有可能的值。

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

https://stackoverflow.com/questions/54751443

复制
相关文章

相似问题

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