Даны два непустых списка целых чисел L1 и L2 - Prolog

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

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

Даны два непустых списка целых чисел L1 и L2. Создать программу, которая строит список L3, содержащий (без повторения) все числа, одновременно встречающиеся в L1 и L2, а затем находит X – увеличенный в три раза последний элемент списка L3 (если список L3 пуст, X=0). Запрос: R(L1, L2, L3, X).

Решение задачи: «Даны два непустых списка целых чисел L1 и L2»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. memb(int,intl)
  7. last(intl,int)
  8. delall(int,intl,intl)
  9. intersect(intl,intl,intl)
  10. task(intl,intl,intl,int)
  11.  
  12. clauses
  13. memb(_,[]) :- fail.
  14. memb(H,[H|_]).
  15. memb(H,[Z|T]) :- Z<>H, memb(H,T).
  16.  
  17. last([],0).
  18. last([X],X) :- !.
  19. last([_|T],X) :- last(T,X).
  20.  
  21. delall(_,[],[]).
  22. delall(X,[X|T],R) :- delall(X,T,R).
  23. delall(X,[Y|T],[Y|R]) :- X<>Y, delall(X,T,R).
  24.  
  25. intersect([],_,[]).
  26. intersect([H|T],Z,[H|R]) :- memb(H,Z), delall(H,T,TT), intersect(TT,Z,R).
  27. intersect([H|T],Z,R) :- not (memb(H,Z)), delall(H,T,TT), intersect(TT,Z,R).
  28.  
  29. task(X,Y,Z,U) :- intersect(X,Y,Z), last(Z,L), U=3*L.

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


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

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

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы