Prolog程序输出列表的最后一个和前一个元素

时间:2014-01-23 16:40:42

标签: prolog

我需要这样的东西last_And_prelast([5,a,d,2],A,B)输出A = d和B = 2

感谢

2 个答案:

答案 0 :(得分:0)

您可以尝试使用内置,如@CappeliC所建议的那样:

last2( Xs , A , B ) :- append(_,[A,B],Xs) .

甚至

last2( Xs , A , B ) :- reverse(Xs,[B,A|_]) .

或者您可以尝试滚动自己的

last2( [A,B]  , A , B ) .
last2( [_|Xs] , A , B ) :- last2(Xs,A,B) .

有多种方法可以做到。

答案 1 :(得分:-1)

此问题已在此处解决:How to get the 2 last values from a list in recursion and in tail-recursion?

使用此

last2_2([_|T],X,Y) :- last2_2(T,X,Y).

或者

last2_2([_,_|T],Y,Z):-last2_2(T,Y,Z).
last2_2([_,A,B],A,B).