我对这个Prolog的合作,以删除元素的所有出现在列表中,嵌套列表包括在内。然而,不是删除元素,而是用空的列表替换它。嵌套列表项删除在序言
这里是我的代码:
del(Item, [Head|Tail], [HeadResult|TailResult]) :-
del(Item, Head, HeadResult),
del(Item,Tail,TailResult),
!.
del(Item,[], []).
del(Item, Item, []).
del(Item, Head, Head).
我相信行del(Item,[], []).
是罪魁祸首。但是我不确定如何更改,以便它不会出现在我的新列表中。想要输出的
例子:
remberD(a, [a,b,c,[a,b]], New).
New = [b,c,[b]].
这个问题也问[这里](http://stackoverflow.com/questions/35757202/deleting-all-occurrences-of-element-in-a-nested-list-in-prolog)。您可能想阅读一些评论。 – lurker
尝试逻辑思考。如果'德尔(X,Y,Z)'是其中元件'X'从列表'Y'得到结果'Z',那么显然'德尔(项目,项,[])的列表中去除一个谓词。'没有按没有意义,因为第二个参数不应与被删除的项目相同。也许你的意思是,'德尔(项目[项目],[])。'和'德尔(项目负责人,负责人)'说如果我从任何列表中删除'Item',我得到了相同的列表回来。这似乎也不合逻辑。 – lurker