在Prolog中

时间:2016-05-09 15:06:38

标签: prolog

在我的项目中,我需要建立一个可能的移动列表。我已经这样做了,但我需要过滤之前动作的可能动作。我怎么能这样做?

自:

PossibleMoves = [(up,1,2),(down,2,4),(left,1,3)],
PreviousMoves = [(up,1,2),(down,2,4)].

要:

PossibleMovesLeft = [(left,1,3)].

我尝试delete\+ memberchk,但没有成功。也许我做错了什么。

1 个答案:

答案 0 :(得分:-1)

这个问题与迷宫无关,它只是从另一个列表中删除列表中的所有元素。这有一个谓词:subtract/3

  

减去(+ Set,+ Delete,-Result)
  删除从设置中删除的所有元素。删除基于使用memberchk / 2的统一。

使用示例:

?- subtract([1,2,5,4,3,5,4], [6,2,4], X).
X = [1, 5, 3, 5]

但如果需要,推出自己的版本真的很容易。