Удаление элемента за заданным - Prolog

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

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

Здравствуйте. Мне необходимо для одноуровневого списка удалить элемент, стоящий следом за заданным. Пример как удалять заданный элемент я нашел:
Листинг программы
  1. delete_all(_, [], []) :-!.
  2. delete_all(X, [X|T], W) :- delete_all(X, T, W),!.
  3. delete_all(X, [Y|T], [Y|W]) :- delete_all(X, T, W).
Я так полагаю, что бы довести до ума этот код, нужно во-первых во второй строчке поменять delete_all(X, [X|T], W) на delete_all(X, [X|T], [X|W]), во-вторых в этой же строчке нужно передать не хвост, а хвост хвоста и вот тут я не понимаю как это сделать. В общем правильно ли я размышляю? Если да, то как передать хвост хвоста?

Решение задачи: «Удаление элемента за заданным»

textual
Листинг программы
  1. del_by_next_all(_, [], []).
  2. del_by_next_all(Elem, [Elem, _ | Tail], [Elem | Rest]) :-
  3.     !,
  4.     del_by_next_all(Elem, Tail, Rest).
  5. del_by_next_all(Elem, [Head | Tail], [Head | Rest]) :-
  6.     !,
  7.     del_by_next_all(Elem, Tail, Rest).

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


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

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

10   голосов , оценка 4.1 из 5

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

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

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