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)

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

Функция удаляет из списка все четные числа.

  1. Создается функция с именем task, которая принимает один аргумент lst — список чисел.
  2. В функции используется замыкание let, чтобы создать переменную r для хранения результата.
  3. Используется цикл dolist, чтобы перебрать каждый элемент в lst.
  4. Внутри цикла используется условие unless, чтобы проверить, является ли элемент четным числом.
  5. Если элемент нечетный, он добавляется в r с помощью функции push.
  6. Результат r возвращается из функции.
  7. Во втором варианте кода используется цикл iter, чтобы перебрать каждый элемент в lst.
  8. Внутри цикла используется условие unless, чтобы проверить, является ли элемент четным числом.
  9. Если элемент нечетный, он добавляется в r с помощью функции collecting.
  10. Результат r возвращается из функции.

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


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

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

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