Предикат "Пересечение множеств" - Prolog

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

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

Программа intersect " Пересечение множеств". Считать, что предикат intersect(X,Y,Z) истинен, если множество Z есть пересечение множеств X и Y. Например, intersect([a,b], [a,c,d,b], [a,d]) - истинно, а intersect([a,b], [b,a,c,d], [a,b,d]) - ложно.

Решение задачи: «Предикат "Пересечение множеств"»

textual
Листинг программы
  1. domains
  2. sl=symbol*
  3.  
  4. predicates
  5. memb(symbol,sl)
  6. intersect(sl,sl,sl)
  7.  
  8. clauses
  9.  
  10. memb(_,[]) :- fail.
  11. memb(X,[X|_]) :- !.
  12. memb(X,[_|T]) :- memb(X,T).
  13.  
  14. intersect([],_,[]).
  15. intersect([H|T],Y,[H|R]) :- memb(H,Y),intersect(T,Y,R), !.
  16. intersect([_|T],Y,R) :- intersect(T,Y,R), !.

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

  1. В коде используется Prolog, система логического программирования.
  2. Код содержит два домена: sl (символы) и пересечение множеств.
  3. Есть два предиката: memb (принадлежит) и intersect (пересечение).
  4. Для переменной _ (неизвестной) и пустого списка [] всегда будет ложь (fail).
  5. Если X является первым элементом списка [X|_], то X принадлежит этому списку.
  6. Если X является первым элементом списка [X|_], то X принадлежит этому списку.
  7. Если X является последним элементом списка [_|T], то X принадлежит этому списку.
  8. Если X является последним элементом списка [_|T], то X принадлежит этому списку.
  9. Если X является первым элементом списка [X|_], то X принадлежит этому списку.
  10. Если X является последним элементом списка [_|T], то X принадлежит этому списку.
  11. Пересечение трех списков [] (пустой список), Y (второй список) и R (результат) всегда будет пустым списком [].
  12. Если первый элемент H списка [H|T] принадлежит второму списку Y, то он также принадлежит третьему списку R.
  13. Если первый элемент H списка [H|T] принадлежит второму списку Y, то он также принадлежит третьему списку R.
  14. Если первый элемент H списка [H|T] принадлежит второму списку Y, то он также принадлежит третьему списку R.
  15. Если первый элемент H списка [H|T] принадлежит второму списку Y, то он также принадлежит третьему списку R.
  16. Если первый элемент H списка [H|T] принадлежит второму списку Y, то он также принадлежит третьему списку R.
  17. Если первый элемент H списка [H|T] принадлежит второму списку Y, то он также принадлежит третьему списку R.
  18. Если первый элемент H списка [H|T] принадлежит второму списку Y, то он также принадлежит третьему списку R.
  19. Если первый элемент H списка [H|T] принадлежит второму списку Y, то он также принадлежит третьему списку R.
  20. Если первый элемент H списка [H|T] принадлежит второму списку Y, то он также принадлежит третьему списку R.

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


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

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

13   голосов , оценка 4.077 из 5

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

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

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