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
возвращается из функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д