Определить функцию, возвращающую копию данного списка, из которой удалены нечетные элементы - 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.

  1. Функция read-from-string используется для чтения строки из кода.
  2. Форматированная строка (~{~[~:evenp~;~:;~a~]~^ ~}) используется для разбиения списка на пары элементов.
  3. ~{~[~:evenp~;~:;~a~]~^ ~} - это форма записи списка с использованием макропа ~{}.
  4. ~[~:evenp~;~:;~a~] - это форма записи списка с использованием макропа ~[].
  5. ~:evenp - это условие, которое проверяет, является ли элемент списка четным числом.
  6. ~:; - это разделитель, который используется для разделения пар элементов списка.
  7. ~a - это условие, которое проверяет, является ли элемент списка числом.
  8. ~^ - это оператор, который используется для удаления элементов из списка.
  9. Результатом работы функции будет строка, которая представляет собой копию исходного списка без нечетных элементов.

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


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

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

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