嗨,有人可以帮我解决序言中的这个问题:
我在序言 penultimo 中有这个
([1,2,3,4,5],X)
我必须得到这个
X = [1,2,3,5]
我必须删除列表的最后一个元素。
请帮我!
嗨,有人可以帮我解决序言中的这个问题:
我在序言 penultimo 中有这个
([1,2,3,4,5],X)
我必须得到这个
X = [1,2,3,5]
我必须删除列表的最后一个元素。
请帮我!
我猜你的代码中有两个案例,是吗?- 一个用于到达列表末尾,一个用于处理列表末尾。
您知道如何编写代码来删除 Last 元素,对吧?- 这(通常)在“结束”情况下完成,它查看最后一个元素,忽略它,并(通常)返回一个空列表,用作通过递归通过先前调用的谓词构造答案列表的基础。
提示:你可以让“结束”案例看两个元素而不是一个元素吗?
当然,有几种方法:
使用 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].