Напишите, пожалуйста, функцию, которая в начальном списке заменяет все элементы-списки результатами их реверсирования. - Lisp

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

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

Напишите, пожалуйста, функцию, которая в начальном списке заменяет все элементы-списки результатами их реверсирования. Реверсирования проводить на всех этапах вложения. Например для списка '(1((2 3)4)5 6) результатом будет: '(1(4(3 2))5 6).

Решение задачи: «Напишите, пожалуйста, функцию, которая в начальном списке заменяет все элементы-списки результатами их реверсирования.»

textual
Листинг программы
(defun task (lst)
  (let ((res nil))
    (dolist (i lst (reverse res))
      (if (atom i) (push i res) (push (task (reverse i)) res)))))
 
==> task
 
(task '(1 ((2 3) 4) 5 6))
 
==> (1 (4 (3 2)) 5 6)

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

В этом коде написана функция task, которая принимает в качестве аргумента список lst. Сначала мы инициализируем переменную res как nil. Затем мы перебираем каждый элемент списка lst с помощью dolist. Если элемент является атомом (то есть, не является списком), мы добавляем его в res. Если элемент является списком, мы вызываем рекурсивно функцию task для его реверсирования и добавляем результат в res. В конце функция возвращает res.

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


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

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

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