Как написать программу - 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д