我产生了:
curr(p5,2) curr(p5,1) curr(p5,6)我怎样才能总结2+1+6的lase字段?
我在clingo_guild.pdf第21页看到了以下内容:
15 :- not M-2 [ enroll(C) : hours(C,H) = H ] M, max_hours(M).然后上来:
#sum [pick(P) : curr(P,I) = I].但我明白:
ERROR: unstratified predicate in:
bus3.lp:73:2: #sum[pick(P)=I:curr(P,I)].
bus3.lp:73:17: curr/2我用的是克莱戈3.0.4。谢谢你的帮助。
发布于 2015-05-02 05:20:11
我假设你想要每一个“挑选”的总数,我假设选择被定义为
pick(P) :- curr(P, _).你应该在密码里说出你的意思。在clingo3指南案例中,您不需要引用这一点。
在clingo3中:
% 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中,它使用了一种更一致的表达方式:
% clingo4
% ...
totals(P, S) :- S = #sum{ I : curr(P,I)}, pick(P).
#show totals/2.发布于 2018-12-02 22:41:12
curr(p5,2). curr(p5,1). curr(p5,6).
sum(S) :- S = #sum{Y: curr(X,Y)}.输出:
clingo version 5.0.0
Solving...
Answer: 1
curr(p5,2) curr(p5,1) curr(p5,6) sum(9)
SATISFIABLEhttps://stackoverflow.com/questions/29974351
复制相似问题