【发布时间】:2015-02-27 17:28:19
【问题描述】:
刚开始学习Prolog,不知道如何得到涉及“all true”的结果,例如:
preAction(4, 3).
preAction(4, 2).
preAction(2, 1).
action(4).
action(2).
action(1).
takeAction(X) :-
action(X),
preAction(X, Y),
action(Y).
预期的结果是 2,因为 action(2) 和 action(1) 都是真的。
但是当前结果是 4 和 2。但是 4 的 preAction 是 (3,2) 并且没有 action(3)。这不是我想要的。
如果我尝试使用否定,由于 4 的 preAction 是可证明的,仍然无法弄清楚如何去做。你知道怎么做吗?
【问题讨论】:
-
@IMolly:1 也可能是一个解决方案。
-
preAction"of" 4 不是(3,2)。它是3或2。而action不是2和1,而是2或1。 -
那么,如果我需要获取所有 preActions 所采取的操作的结果,该怎么做呢?