Даны два непустых списка целых чисел 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

14   голосов , оценка 3.786 из 5
Похожие ответы