Удалить из второго списка все вхождения головы первого списка - 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).

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

В данном коде реализована логика удаления всех вхождений головы первого списка из второго списка.

  1. delall(_,[],[]). - если первый список пустой, то есть не содержит элементов, то в результате будет также пустой список.
  2. delall(H,[H|T],[]). - если в первом списке есть элемент, который совпадает с головой второго списка, то этот элемент удаляется из второго списка, и в результате возвращается пустой список.
  3. delall(H,[Q|T],[Q|Z]) :- H<>Q, delall(H,T,Z). - если элемент головы первого списка не совпадает с головой второго списка, то рекурсивно вызывается функция delall для оставшихся элементов первого списка и нового списка, который состоит из всех элементов второго списка, кроме головы. В результате возвращается новый список без головы.

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


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

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

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