我对Prolog来说是全新的,但我必须这样做才能完成作业。我尝试过这样的事情
delete(_,[],[]).
delete([X,Y,Z],[X,Y,Z|List],Temp) :-
reverse(Temp,List).
但是无法弄清楚,如何从反向列表中实现第二次删除。也许我做错了,我迷路了,谢谢你的回答。
答案 0 :(得分:0)
使用append
:
delete([A, B, C | End], Middle, [A, B, C, X, Y, Z]) :-
append(Middle, [X, Y, Z], End).
试运行:
?- delete([1,2,3,4,5,6,7,8], L1, L2).
L1 = [4, 5],
L2 = [1, 2, 3, 6, 7, 8]
?- delete([1,2,3], L1, L2).
false.