Удаление из первого списка тех элементов, что отсутствуют во втором - Prolog

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

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

Здравствуйте, подправьте программку пожалуйста. Задание звучит так: Напишите логическую программу удаления из первого списка тех элементов, что отсутствуют во втором. Вот чего я делаю:
Понимаю что делаю что-то не так а вот что не понимаю. Исправьте пожалуйста

Решение задачи: «Удаление из первого списка тех элементов, что отсутствуют во втором»

textual
Листинг программы
domains
    namelist=name*
    name=symbol
    
predicates
    difference(namelist,namelist,namelist)
    is_a_member_of(name,namelist)
clauses
    difference([],_,[]).
    difference([H|T1], L2, L3):
        -is_a_member_of(H, L2),!,
        difference(T1, L2, L3).
    difference([H|T1], L2, [H|T3]):
        -difference(T1, L2, T3).

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

В этом коде реализована функция difference для трех списков. Она удаляет из первого списка те элементы, которые отсутствуют во втором списке. В первой строке объявлено три списка: первый пустой список, второй и третий списки. Затем идут два утверждения:

  1. difference([],_,[]). - если первый список пустой, то результатом будет пустой список.
  2. difference([H|T1], L2, L3): - если в первом списке есть элементы, то идет попытка найти их во втором списке. Если элемент найден, то он удаляется из первого списка и поиск продолжается. Если элемент не найден, то он добавляется в третий список.
  3. difference([H|T1], L2, [H|T3]): - если в первом списке есть элементы, которые не найдены во втором списке, то они добавляются в третий список. В итоге, функция difference возвращает список, в котором удалены все элементы, которые присутствуют во втором списке.

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


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

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

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