我应该怎样做才能得到如下结果:
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).
答案 0 :(得分:3)
adjpair([X, X]).
adjpair([X, X | Rest]) :-
adjpair(Rest).
(对于空列表将返回false,这可能是所需的行为,但问题并不完全清楚。)