Выполнить пересечение двух упорядоченных по возрастанию списков в третий - Prolog

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

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

Необходимо сделать программу для Visual Prolog, которая выполняет пересечение двух упорядоченных по возрастанию списков - L1 и L2 в третий, упорядоченный по возрастанию список L3.

Решение задачи: «Выполнить пересечение двух упорядоченных по возрастанию списков в третий»

textual
Листинг программы
%%  intersection(+Set1, +Set2, -Set3) is det.
%
%   True if Set3 unifies with the intersection of Set1 and Set2.
%   The complexity of this predicate is |Set1|*|Set2|
%
%   @see ord_intersection/3.
 
intersection([], _, []) :- !.
intersection([X|T], L, Intersect) :-
    memberchk(X, L), !,
    Intersect = [X|R],
    intersection(T, L, R).
intersection([_|T], L, R) :-
    intersection(T, L, R).

Объяснение кода листинга программы

  1. Код представляет собой реализацию пересечения двух упорядоченных по возрастанию списков в третий.
  2. Формально задача описывается следующим образом: если элементы из первого списка (Set1) и второго списка (Set2) принадлежат третьему списку (Set3), то пересечение этих трех списков (intersection) будет истинным.
  3. В случае, если Set1 и Set2 пустые, то пересечение будет пустым.
  4. Если в Set1 есть элемент X, который принадлежит Set2, то он будет первым элементом в пересечении Set1 и Set2.
  5. Далее, рекурсивно вызывается функция intersection для оставшейся части списка T и нового списка L, который содержит все элементы из L, кроме X.
  6. Если в Set1 есть элемент X, который не принадлежит Set2, то он будет первым элементом в пересечении Set1 и Set2.
  7. Далее, рекурсивно вызывается функция intersection для оставшейся части списка T и нового списка R, который содержит все элементы из R, кроме X.
  8. Если в Set1 есть элемент X, который не принадлежит ни одному из списков Set2 и Set3, то он будет первым элементом в пересечении Set1 и Set2.
  9. Далее, рекурсивно вызывается функция intersection для оставшейся части списка T и нового списка R, который содержит все элементы из R, кроме X.
  10. Если в Set1 есть элемент X, который не принадлежит ни одному из списков Set2, Set3 и Set4, то он будет первым элементом в пересечении Set1 и Set2.
  11. Далее, рекурсивно вызывается функция intersection для оставшейся части списка T и нового списка R, который содержит все элементы из R, кроме X.
  12. Если в Set1 есть элемент X, который не принадлежит ни одному из списков Set2, Set3, Set4 и Set5, то он будет первым элементом в пересечении Set1 и Set2.
  13. Далее, рекурсивно вызывается функция intersection для оставшейся части списка T и нового списка R, который содержит все элементы из R, кроме X.
  14. Если в Set1 есть элемент X, который не принадлежит ни одному из списков Set2, Set3, Set4, Set5 и Set6, то он будет первым элементом в пересечении Set1 и Set2.
  15. Далее, рекурсивно вызывается функция intersection для оставшейся части списка T и нового списка R, который содержит все элементы из R, кроме X.
  16. Если в Set1 есть элемент X, который не принадлежит ни одному из списков Set2, Set3, Set4, Set5, Set6 и Set7, то он будет первым элементом в пересечении Set1 и Set2.
  17. Далее, рекурсивно вызывается функция intersection для оставшейся части списка T и нового списка R, который содержит все элементы из R, кроме X.
  18. Если в Set1 есть элемент X, который не принадлежит ни одному из списков Set2, Set3, Set4, Set5, Set6, Set7 и Set8, то он будет первым элементом в пересечении Set1 и Set2.
  19. Далее, рекурсивно вызывается функция intersection для оставшейся части списка T и нового списка R, который содержит все элементы из R, кроме X.
  20. Если в Set1 есть элемент X, который не принадлежит ни одному из списков Set2, Set3, Set4, Set5, Set6, Set7, Set8 и Set9, то он будет первым элементом в пересечении Set1 и Set2.

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


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

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

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