このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1272006124/113
#  リストのある要素を検索して、そのm要素前の値を取り出しなさい。 
# 

リストのある要素を検索して、そのm要素前の値を取り出す(_対象リスト,_検索要素,_m要素前,_値) :-
    append(L0,[_検索要素|_],_対象リスト),
        length(L2,_m要素前),
        L2 = [_値|_],
        append(_,L2,L0).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

リストのある要素を検索して、そのm要素前の値を取り出す(_対象リスト,_検索要素,_m要素前,_値) :-
    append(L0,[_検索要素|_],_対象リスト),
    last_nth(_m要素前,L0,_値).

% *** user: last_nth / 3 ***
last_nth(Nth,L,X) :-
    last_n(Nth,L,L2),
    L2 = [X|_],!.

% *** user: last_n / 3 ***
last_n(N,L,LX) :-
    integer(N),
    length(LX,N),
    append(L0,LX,L).
last_n(N,L,LX) :-
    var(N),
    append(L0,LX,L),
    length(LX,N).