Добавить элемент в список - Lisp

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

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

Как можно добавить элемент в список на определенную позицию? Примерно (Вставляем во сторую позицию х)
(defun add-on-pos (lst pos element) ...)
 
(add-on-pos `(a b c) 2 x)
: (a b x c)

Решение задачи: «Добавить элемент в список»

textual
Листинг программы
(defun insert-by-pos (pos lst el)
    "INSERT ELEMENT TO CERTAIN POSITION"
        (nconc (subseq lst 0 pos) (cons el (subseq lst pos))))
 
* (insert-by-pos 2 `(1 2 3) 55)
 
(1 2 55 3)
* (insert-by-pos 0 `(1 2 3) 55)
 
(55 1 2 3)

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

В данном коде представлена функция insert-by-pos, которая добавляет элемент в список на определенную позицию. Алгоритм работы функции следующий:

  1. Аргументы функции:
    • pos - позиция, на которую нужно вставить элемент;
    • lst - список, в который нужно вставить элемент;
    • el - элемент, который нужно вставить.
  2. Функция использует вспомогательную функцию nconc, которая объединяет два списка в один.
  3. Функция разбивает список lst на две части: первая часть - это список до позиции pos, вторая часть - это список после позиции pos.
  4. Затем функция использует функцию cons, которая добавляет элемент el в начало второй части списка.
  5. Полученные две части списка объединяются с помощью функции nconc.
  6. Результат работы функции - измененный список, в котором элемент el находится на позиции pos. Примеры использования функции:
  7. (1 2 3) 55 2 - добавление элемента 55 на вторую позицию списка (1 2 3). Результат: (1 2 55 3).
  8. (1 2 3) 55 0 - добавление элемента 55 на первую позицию списка (1 2 3). Результат: (55 1 2 3).

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


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

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

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