prolog列表的Prelast元素

时间:2013-09-26 07:15:49

标签: prolog

嗨,有人可以在prolog中帮我解决这个问题:

我在prolog penultimo中有这个

([1,2,3,4,5],X) 

我必须得到这个

X = [1,2,3,5]

我必须删除列表的prelast elemnt。

请帮帮我!

2 个答案:

答案 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].