因此,如果输入为 L = [1,[2,3,4],5] ,则输出应为 R = [4,5] 。 常规列表中最后一个元素的代码是
last([X],X].
last([H|T],X):-last(T,X).
答案 0 :(得分:0)
这不是优雅的Prolog,但我认为它会做你想要的:
deeplast([L], X) :-
deeplast(L, X).
deeplast([X], X) :-
atomic(X).
deeplast([H|T], X) :-
atomic(H),
deeplast(T, X).
deeplast([H|T], X) :-
compound(H),
deeplast(H, Y),
deeplast(T, Z),
X = [Y, Z].
答案 1 :(得分:0)
这是彼得的anwers的略作编辑的版本:
deeplast([L], X) :-
deeplast(L, X).
deeplast([X], X) :-
atomic(X).
deeplast([H|T], X) :-
atomic(H),
deeplast(T, X).
deeplast([H|T], X) :-
deeplast(H, Y),
deeplast(T, Z),
X = Z.
?- deeplast([1,[2,3],4,[5,[6,8]]],R).
R = 8