Удалить элемент на определенной позиции - Lisp

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

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

Как можно удалить элемент из списка зная позицию этого элемента?

Решение задачи: «Удалить элемент на определенной позиции»

textual
Листинг программы
(defun del-by-pos (lst pos)
  (let ((res nil))
    (iter (for a in lst) (for c upfrom 0) (unless (= c pos) (collecting a into res)))
    res))
 
==> del-by-pos
 
(del-by-pos '(q w e r t y u i o p) 3)
 
==> (q w e T y u i o p)
 
(del-by-pos '(q w e r t y u i o p) 33)
 
==> (q w e r T y u i o p)
 
(del-by-pos '(q w e r t y u i o p) 0)
 
==> (w e r T y u i o p)
 
(del-by-pos '(q w e r t y u i o p) -50)
 
==> (q w e r T y u i o p)

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

В данном коде представлена функция del-by-pos, которая удаляет элемент из списка на определенной позиции. Список позиций для удаления задается в виде пары инкрементов a и c, где c - это позиция, на которой необходимо удалить элемент, а a - это итератор, который перебирает элементы списка. Внутри функции используется встроенная функция iter, которая позволяет перебрать элементы списка с заданным шагом. Если текущий элемент списка a не является элементом, на котором необходимо удалить (т.е. c не равно заданной позиции), то он добавляется в результат. В итоге, после выполнения функции, в переменной res будет храниться список без элемента на заданной позиции. В приведенном примере кода вызывается функция del-by-pos с аргументами (q w e r t y u i o p) и 3. Это означает, что необходимо удалить элемент на третьей позиции в списке (q w e r t y u i o p). В результате выполнения функции получим список (q w e T y u i o p). Если в качестве аргумента функции использовать (q w e r T y u i o p) и 33, то получим список (q w e r T y u i o p), так как 33 не является допустимой позицией для списка. Если в качестве аргумента функции использовать (q w e r T y u i o p) и 0, то получим список (w e r T y u i o p), так как 0 является первой позицией в списке. Если в качестве аргумента функции использовать (q w e r T y u i o p) и -50, то получим список (q w e r T y u i o p), так как -50 не является допустимой позицией для списка.

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


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

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

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