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

Узнай цену своей работы

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

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

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

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
Похожие ответы