prolog中的相邻对功能

时间:2014-04-08 01:46:25

标签: prolog

我应该怎样做才能得到如下结果:

adjpair(L): The list L consists of pairs of adjacent identical values.
?- adjpair([a, a, b, b, c, c]).
true
?- adjpair([a, b, a, b]).
false
?- adjpair([a, a, a, X]).
X = a

我到目前为止的是:

pair([H|T]) :-
    select(H, T, T1),
    \+ is_in(H, T1),
    pair(T1).
pair([X,X]).

is_in(X, [H|_]) :-    
    X == H.   
is_in(X, [_|T]) :-
    is_in(X, T).

1 个答案:

答案 0 :(得分:3)

adjpair([X, X]).
adjpair([X, X | Rest]) :-
    adjpair(Rest).

(对于空列表将返回false,这可能是所需的行为,但问题并不完全清楚。)