嗨,有人可以在prolog中帮我解决这个问题:
我在prolog penultimo中有这个
([1,2,3,4,5],X)
我必须得到这个
X = [1,2,3,5]
我必须删除列表的prelast elemnt。
请帮帮我!
答案 0 :(得分:1)
我猜你的代码中有两个案例,是吗? - 一个用于到达列表的末尾,另一个用于处理列表的末尾。
你知道如何编写代码来删除Last元素,对吧? - (通常)在“结束”情况下完成,查看最后一个元素,忽略它,并且(通常)返回一个空列表,用作通过先前调用的谓词递归构造答案列表的基础。
提示:你能否将“结束”案例看成两个元素而不是一个?
答案 1 :(得分:1)
当然,有很多方法:
使用append来解构/重构列表(效率低下):
delete_prelast(L, R) :- append(H, [_,X], L), append(H, [X], R).
来自(修改)评论,效率更高:
quitapenultimo([_,X],[X]) :- !.
quitapenultimo([X|T],[X|R]) :- quitapenultimo(T,R).
产量
?- quitapenultimo([1,2,3,4,5],R).
R = [1, 2, 3, 5].