Удалить из второго списка все вхождения головы первого списка - Prolog
Формулировка задачи:
2. Даны 2 списка. Удалить из второго все вхождения головы первого списка.
Решение задачи: «Удалить из второго списка все вхождения головы первого списка»
textual
Листинг программы
delall(_,[],[]). delall(H,[H|T],Z) :- delall(H,T,Z). delall(H,[Q|T],[Q|Z]) :- H<>Q, delall(H,T,Z).
Объяснение кода листинга программы
В данном коде реализована логика удаления всех вхождений головы первого списка из второго списка.
delall(_,[],[]).
- если первый список пустой, то есть не содержит элементов, то в результате будет также пустой список.delall(H,[H|T],[]).
- если в первом списке есть элемент, который совпадает с головой второго списка, то этот элемент удаляется из второго списка, и в результате возвращается пустой список.delall(H,[Q|T],[Q|Z]) :- H<>Q, delall(H,T,Z).
- если элемент головы первого списка не совпадает с головой второго списка, то рекурсивно вызывается функцияdelall
для оставшихся элементов первого списка и нового списка, который состоит из всех элементов второго списка, кроме головы. В результате возвращается новый список без головы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д