我對這個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