Lisp! Определите функцию, удаляющую из списка все четные числа

Узнай цену своей работы

Формулировка задачи:

Определите функцию, удаляющую из списка все четные числа.Решение должно быть составлено без использования функционалов и первоначальных элементов.Заранее спасибо)

Решение задачи: «Lisp! Определите функцию, удаляющую из списка все четные числа»

textual
Листинг программы
  1. (defun task (lst)
  2.   (let ((r nil))
  3.     (dolist (a lst (reverse r))
  4.       (unless (and (fixedp a) (evenp a)) (push a r)))))
  5.  
  6. ==> TASK
  7.  
  8. (task '(a 1 b 2 c 3 d 4))
  9.  
  10. ==> (A 1 B C 3 D)
  11.  
  12. (defun task (lst)
  13.   (let ((r nil))
  14.     (iter (for a in lst)
  15.       (unless (and (fixedp a) (evenp a)) (collecting a into r))) r))
  16.    
  17. ==> TASK
  18.  
  19. (task '(a 1 b 2 c 3 d 4))
  20.  
  21. ==> (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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы