当我使用的Prolog的内部谓词“减/ 3”:在例如减(+套装,+删除,-Result):序言 - 减去每个项目只有一次
subtract([a,b,c,d,c,c,d,e], [c,a], X).
X = [b, d, d, e].
,但我想减去+从+设置一次删除每个项目。我的意思是,我想要
subtract([a,b,c,d,c,c,d,e], [c,a], X). to give
X = [b, d, c, c, d, e].
我该怎么做?
当我使用的Prolog的内部谓词“减/ 3”:在例如减(+套装,+删除,-Result):序言 - 减去每个项目只有一次
subtract([a,b,c,d,c,c,d,e], [c,a], X).
X = [b, d, d, e].
,但我想减去+从+设置一次删除每个项目。我的意思是,我想要
subtract([a,b,c,d,c,c,d,e], [c,a], X). to give
X = [b, d, c, c, d, e].
我该怎么做?
你可以建立你自己的程序来做到这一点。 例如:
subtract_once(List, [], List).
subtract_once(List, [Item|Delete], Result):-
(select(Item, List, NList)->
subtract_once(NList, Delete, Result);
(List\=[],subtract_once(List, Delete, Result))).
在每次迭代从项目列表采取一个项目删除,并提取从输入列表中的一个元素,然后继续使用这两个列表的其余部分。
嘿,谢谢你的帮助。但是这个谓词有一个问题。当我做? - subtract_once([a,a,b],[a,a,a],X)时,它给出X = [b]。但是我希望它在这种情况下是虚假的。我该如何解决这个问题? – void