我必须弄清楚如何找出该项目是否在列表中的其他两个项目之间。我的想法是拥有somewhereleft
和somewhereright
函数,然后以somewherebetween(X,Y,Z,L) :- somewhereleft(X,Y,L), somewhereright(Y,Z,L)
的方式使用它。我已经实现了功能,以确定该项目是否在右侧right(X,Y, [X, Y|_]). right(X, Y, [_|T]) :-right(X, Y, T).
和左侧left(X, Y, L) :- right(Y, X, L).
;但是,无法找到递归的somewhereleft/right
函数。
答案 0 :(得分:1)
追加/ 3 可能是您的朋友
in_order(X, Y, Z, Lst) :-
append(_, [X|T1], Lst),
append(_, [Y|T2], T1),
append(_, [Z|_], T2).
例如
?- in_order(a,b,c,[a,e,b,d,c]).
true .
但是
?- in_order(a,b,c,[c,b,a,b,c,b,a]).
true ;
false.