我正在计算clingo中多个字段的总和:
x(1,2,3).
x(4,5,6).
x(7,8,9).
y(A,B,C) :-
A = #sum { A1, B1, C1 : x(A1,B1,C1) },
B = #sum { B1, A1, C1 : x(A1,B1,C1) },
C = #sum { C1, A1, B1 : x(A1,B1,C1) }.
这有效。输出为:
x(1,2,3) x(4,5,6) x(7,8,9) y(12,15,18)
但是,这很乏味。我非常想将它们全部汇总(不起作用):
z(A,B,C) :- (A,B,C) = #sum {(A1,B1,C1) : x(A1,B1,C1)}.
输出为:
test.lp:10:30-38: info: tuple ignored:
(1,2,3)
test.lp:10:30-38: info: tuple ignored:
(4,5,6)
test.lp:10:30-38: info: tuple ignored:
(7,8,9)
有没有一种方法可以简化我的第一种方法?