Удаление из первого списка тех элементов, что отсутствуют во втором - 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
для трех списков. Она удаляет из первого списка те элементы, которые отсутствуют во втором списке.
В первой строке объявлено три списка: первый пустой список, второй и третий списки.
Затем идут два утверждения:
difference([],_,[]).
- если первый список пустой, то результатом будет пустой список.difference([H|T1], L2, L3):
- если в первом списке есть элементы, то идет попытка найти их во втором списке. Если элемент найден, то он удаляется из первого списка и поиск продолжается. Если элемент не найден, то он добавляется в третий список.difference([H|T1], L2, [H|T3]):
- если в первом списке есть элементы, которые не найдены во втором списке, то они добавляются в третий список. В итоге, функцияdifference
возвращает список, в котором удалены все элементы, которые присутствуют во втором списке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д