Как написать программу - Lisp

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

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

По произвольному списку построить одноуровневый список (с сохранением порядка следования атомов)

Решение задачи: «Как написать программу»

textual
Листинг программы
(defun task (lst)
  (cond ((null lst) nil)
        ((atom (car lst)) (cons (car lst) (task (cdr lst))))
        (t (append (task (car lst)) (task (cdr lst))))))
 
==> task
 
(task '(a (s (((a s)) h (((t)))))))
 
==> (a s a s h T)

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

В коде определена функция task, которая принимает в качестве аргумента список lst. Если список пустой, то возвращается nil. Если первый элемент списка является атомом, то он добавляется в начало результата, а остальной список передаётся в рекурсивный вызов функции task. Если первый элемент списка не является атомом, то он разделяется на две части, которые объединяются со следующими элементами списка в результате. При вызове функции task с аргументом '(a (s (((a s)) h (((t))))))) будет получен следующий результат: (a s a s h T).

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


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

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

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