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

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

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

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

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

textual
Листинг программы
  1. (defun task (lst)
  2.   (cond ((null lst) nil)
  3.         ((atom (car lst)) (cons (car lst) (task (cdr lst))))
  4.         (t (append (task (car lst)) (task (cdr lst))))))
  5.  
  6. ==> task
  7.  
  8. (task '(a (s (((a s)) h (((t)))))))
  9.  
  10. ==> (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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы