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