Даны два непустых списка целых чисел L1 и L2 - Prolog
Формулировка задачи:
Даны два непустых списка целых чисел L1 и L2. Создать программу, которая
строит список L3, содержащий (без повторения) все числа, одновременно
встречающиеся в L1 и L2, а затем находит X – увеличенный в три раза последний
элемент списка L3 (если список L3 пуст, X=0). Запрос: R(L1, L2, L3, X).
Решение задачи: «Даны два непустых списка целых чисел L1 и L2»
textual
Листинг программы
domains int=integer intl=int* predicates memb(int,intl) last(intl,int) delall(int,intl,intl) intersect(intl,intl,intl) task(intl,intl,intl,int) clauses memb(_,[]) :- fail. memb(H,[H|_]). memb(H,[Z|T]) :- Z<>H, memb(H,T). last([],0). last([X],X) :- !. last([_|T],X) :- last(T,X). delall(_,[],[]). delall(X,[X|T],R) :- delall(X,T,R). delall(X,[Y|T],[Y|R]) :- X<>Y, delall(X,T,R). intersect([],_,[]). intersect([H|T],Z,[H|R]) :- memb(H,Z), delall(H,T,TT), intersect(TT,Z,R). intersect([H|T],Z,R) :- not (memb(H,Z)), delall(H,T,TT), intersect(TT,Z,R). task(X,Y,Z,U) :- intersect(X,Y,Z), last(Z,L), U=3*L.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д