Встречаются ли элементы первого списка во втором списке в том же порядке - Prolog

Формулировка задачи:

Написать программу, которая для двух произвольных списков проверяет, встречаются ли элементы первого списка во втором списке в том же порядке (удалив лишние элементы из второго списка, получаем первый список). Например: Список1=[a, b, d, x, z], Список2=[s, b, a, c, b, b, d, e, x, r, z].

Код к задаче: «Встречаются ли элементы первого списка во втором списке в том же порядке - Prolog»

textual
domains
int=integer
intl=int*
 
predicates
memb(int,intl)
diff(intl,intl,intl)
eqlist(intl,intl)
task(intl,intl)
 
clauses
memb(_,[]) :- fail.
memb(H,[H|_]) :- !.
memb(H,[H1|T]) :- H<>H1, memb(H,T).
 
diff([],_,[]).
diff([H|T],X,[H|R]) :- memb(H,X),diff(T,X,R).
diff([H|T],X,R) :- not(memb(H,X)),diff(T,X,R).
 
eqlist([],[]).
eqlist([H|T],[H|Z]) :- eqlist(T,Z).
 
task(X,Y) :- diff(Y,X,Z), eqlist(X,Z).

13   голосов, оценка 4.154 из 5


СОХРАНИТЬ ССЫЛКУ