Определить функцию, возвращающую копию данного списка, из которой удалены нечетные элементы - Lisp
Формулировка задачи:
Дан список. Определить функцию, возвращающую его копию, из которой удалены 1-ый, 3-ий и т.д. элементы. Использовать только базис Лиспа.
Например: если дано "(3 1 4 1 5 9 2 6)", ответом будет "(1 1 9 6)".
Решение задачи: «Определить функцию, возвращающую копию данного списка, из которой удалены нечетные элементы»
textual
Листинг программы
(defun task (lst) (read-from-string (format nil "(~{~[~:evenp~;~:;~a~]~^ ~})" lst)))
Объяснение кода листинга программы
В данном коде определена функция с именем task
, которая принимает в качестве аргумента список lst
.
- Функция
read-from-string
используется для чтения строки из кода. - Форматированная строка
(~{~[~:evenp~;~:;~a~]~^ ~})
используется для разбиения списка на пары элементов. ~{~[~:evenp~;~:;~a~]~^ ~}
- это форма записи списка с использованием макропа~{}
.~[~:evenp~;~:;~a~]
- это форма записи списка с использованием макропа~[]
.~:evenp
- это условие, которое проверяет, является ли элемент списка четным числом.~:;
- это разделитель, который используется для разделения пар элементов списка.~a
- это условие, которое проверяет, является ли элемент списка числом.~^
- это оператор, который используется для удаления элементов из списка.- Результатом работы функции будет строка, которая представляет собой копию исходного списка без нечетных элементов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д