首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以clingo表示的集合

以clingo表示的集合
EN

Stack Overflow用户
提问于 2015-04-30 17:39:20
回答 2查看 2.1K关注 0票数 2

我产生了:

代码语言:javascript
复制
curr(p5,2) curr(p5,1) curr(p5,6)

我怎样才能总结2+1+6的lase字段?

我在clingo_guild.pdf第21页看到了以下内容:

代码语言:javascript
复制
15 :- not M-2 [ enroll(C) : hours(C,H) = H ] M, max_hours(M).

然后上来:

代码语言:javascript
复制
#sum [pick(P) : curr(P,I) = I].

但我明白:

代码语言:javascript
复制
ERROR: unstratified predicate in:
bus3.lp:73:2: #sum[pick(P)=I:curr(P,I)].
bus3.lp:73:17: curr/2

我用的是克莱戈3.0.4。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-02 05:20:11

我假设你想要每一个“挑选”的总数,我假设选择被定义为

代码语言:javascript
复制
pick(P) :- curr(P, _).

你应该在密码里说出你的意思。在clingo3指南案例中,您不需要引用这一点。

在clingo3中:

代码语言:javascript
复制
% clingo3
curr(p4,2). curr(p4,2). curr(p4,6).
curr(p5,2). curr(p5,1). curr(p5,6).

pick(P) :- curr(P, _).
% for each pick P, sum all I from matching curr(P, I)
totals(P, S) :- S = #sum[ curr(P,I) = I ], pick(P).

#hide.
#show totals/2.

在clingo4中,它使用了一种更一致的表达方式:

代码语言:javascript
复制
% clingo4
% ...
totals(P, S) :- S = #sum{ I : curr(P,I)}, pick(P).
#show totals/2.
票数 1
EN

Stack Overflow用户

发布于 2018-12-02 22:41:12

代码语言:javascript
复制
curr(p5,2). curr(p5,1). curr(p5,6).

sum(S) :- S = #sum{Y: curr(X,Y)}.

输出:

代码语言:javascript
复制
clingo version 5.0.0
Solving...
Answer: 1
curr(p5,2) curr(p5,1) curr(p5,6) sum(9)
SATISFIABLE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29974351

复制
相关文章

相似问题

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