Список без чисел - Lisp

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

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

Определите функцию (f s), результатом которой является список, получающийся из списка списков s после удаления всех подсписков, содержащих числа.
Листинг программы
  1. (defun f(lst)
  2. (cond
  3. ((null lst) nil)
  4. ((listp (first lst)) ((f (first lst)) (f (rest lst))))
  5. ((numberp (first lst)) (f (rest lst)))
  6. ( t (cons (first lst) (f (rest lst))))
  7. )
  8. )
Почему то не работает строка:
Листинг программы
  1. ((listp (first lst)) ((f (first lst)) (f (rest lst))))
  2. Apply_: f - не является корректным именем функции!
  3. ==> ERRSTATE
((listp (first lst)) ((f (first lst)))) то же не работает.

Решение задачи: «Список без чисел»

textual
Листинг программы
  1. (defun f(lst)
  2.  (cond
  3.   ((null lst) nil)
  4.   ((listp (first lst))
  5.    (cons (f (first lst)) (f (rest lst)))
  6.   )
  7.   ((numberp (first lst)) (f (rest lst)))
  8.   ( t (cons (first lst) (f (rest lst))))
  9.  )
  10. )

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

В данном коде определён функцией f список lst. Если список пуст, то возвращается nil. Для непустого списка выполняется рекурсивный вызов функции f для первого элемента списка, а затем результат этого вызова присоединяется к результату вызова функции f для оставшейся части списка. Если первый элемент списка является числом, то он присоединяется к результату вызова функции f для оставшейся части списка. Если первый элемент списка не является числом и не является пустым списком, то он присоединяется к результату вызова функции f для оставшейся части списка.

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


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

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

14   голосов , оценка 4.286 из 5

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

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

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