Lisp! Определите функцию, удаляющую из списка все четные числа
Формулировка задачи:
Определите функцию, удаляющую из списка все четные числа.Решение должно быть составлено без использования функционалов и первоначальных элементов.Заранее спасибо)
Решение задачи: «Lisp! Определите функцию, удаляющую из списка все четные числа»
textual
Листинг программы
(defun task (lst) (let ((r nil)) (dolist (a lst (reverse r)) (unless (and (fixedp a) (evenp a)) (push a r))))) ==> TASK (task '(a 1 b 2 c 3 d 4)) ==> (A 1 B C 3 D) (defun task (lst) (let ((r nil)) (iter (for a in lst) (unless (and (fixedp a) (evenp a)) (collecting a into r))) r)) ==> TASK (task '(a 1 b 2 c 3 d 4)) ==> (A 1 B C 3 D)
Объяснение кода листинга программы
Функция удаляет из списка все четные числа.
- Создается функция с именем
task
, которая принимает один аргументlst
— список чисел. - В функции используется замыкание
let
, чтобы создать переменнуюr
для хранения результата. - Используется цикл
dolist
, чтобы перебрать каждый элемент вlst
. - Внутри цикла используется условие
unless
, чтобы проверить, является ли элемент четным числом. - Если элемент нечетный, он добавляется в
r
с помощью функцииpush
. - Результат
r
возвращается из функции. - Во втором варианте кода используется цикл
iter
, чтобы перебрать каждый элемент вlst
. - Внутри цикла используется условие
unless
, чтобы проверить, является ли элемент четным числом. - Если элемент нечетный, он добавляется в
r
с помощью функцииcollecting
. - Результат
r
возвращается из функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д