Функции на Swi Prolog

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

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

Здравствуйте, кто-нибудь знает как сделать эту функцию? Опишите функцию, принимающую в качестве аргумента два списка и возвращающая true, если все элементы, входящие в оба списка, расположены в этих списках в одном и том же порядке.

Решение задачи: «Функции на Swi Prolog»

textual
Листинг программы
domains
int=integer
intl=int*
 
predicates
 
memb(int,intl)
inters(intl,intl,intl)
task(intl,intl)
 
clauses
    
memb(_,[]) :- fail.
memb(X,[X|_]) :- !.
memb(X,[Y|T]) :- X<>Y, memb(X,T).
     
inters([],_,[]).
inters([X|T],Y,[X|R]) :- memb(X,Y), inters(T,Y,R).
inters([X|T],Y,R) :- not(memb(X,Y)), inters(T,Y,R).     
 
task(X,Y) :- inters(X,Y,R1), inters(Y,X,R2), R1=R2.

Оцени полезность:

15   голосов , оценка 3.933 из 5