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