我想要一个程序给出一个列表L,其中元素X出现三次,它返回一个包含它的NL列表一次。 例如,这个问题删除第二个和第三个元素
?- erase([1,2,3,1,6,1,7],1,NL).
应该返回
NL = [1,2,3,6,7] or NL = [2,3,1,6,7] or NL = [2,3,6,1,7]
附: 假设给定的列表不包含任何元素2,4或更多次。
所以,这是我的代码,但是当我提出问题时它返回false。任何建议纠正它,将不胜感激。
erase([],_,[]).
erase(L,X,NL):-
append(A,[X,B,X,C,X,D],L),
append(A,[X,B,C,D],NL).
如果发生了四次?我们只需要找'1'吗?或者删除多次出现的* all *元素? –
正如我在P.S中所写的,假设这种情况将不存在 – kindaExcited
我会从* duck调试*开始:告诉(对你的橡皮鸭或者我们)你的谓词的目标是什么。你为什么在这里使用'append/3'?你为什么认为这是解决这个问题的好工具? –