在我的项目中,我需要建立一个可能的移动列表。我已经这样做了,但我需要过滤之前动作的可能动作。我怎么能这样做?
自:
PossibleMoves = [(up,1,2),(down,2,4),(left,1,3)],
PreviousMoves = [(up,1,2),(down,2,4)].
要:
PossibleMovesLeft = [(left,1,3)].
我尝试delete
,\+ memberchk
,但没有成功。也许我做错了什么。
答案 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]
但如果需要,推出自己的版本真的很容易。