当我使用prolog的内置谓词“减去/ 3”时:减去(+ Set,+ Delete,-Result)例如:
subtract([a,b,c,d,c,c,d,e], [c,a], X).
X = [b, d, d, e].
但我想在+设置ONCE中删除+删除中的每个项目。我的意思是,我想要
subtract([a,b,c,d,c,c,d,e], [c,a], X). to give
X = [b, d, c, c, d, e].
我该怎么做?
答案 0 :(得分:2)
您可以构建自己的程序来实现这一目标。 例如:
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))).
在每次迭代中,您从要删除的项目列表中取一个项目,并从输入列表中提取一个元素,然后继续使用两个列表的其余部分。
答案 1 :(得分:2)
你可以按照以下方式做点什么:
subtract_custom(Remainder, [], Remainder).
subtract_custom(List, [Current|Delete], X) :-
select(Current, List, Rest),
subtract_custom(Rest, Delete, X).
如果您希望删除失败时失败。否则你必须适应它。