Даны два непустых списка целых чисел 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д