Вложенный Список - Lisp

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

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

Проверить, является ли список списком чисел, или нет Работающий код:
(defun check (lst)
    (cond
        ((Null lst)
           "yes"
        )
        ((numberp (car lst))
            (check (cdr lst))
        )
        (
            "no"
        )
    )
)
Нужно к этому добавить проверку и на вложенный список(если вложенный, выводил true)

Решение задачи: «Вложенный Список»

textual
Листинг программы
(defun is-num-list (lst)
  (cond ((null lst) t)
        ((numberp (car lst)) (is-num-list (cdr lst)))
        ((listp (car lst)) (and (is-num-list (car lst)) (is-num-list (cdr lst))))
        (t nil))) 
 
==> is-num-list
 
(is-num-list '(1 2 3 (((6 7) 8) 9)))
 
==> T
 
(is-num-list '(1 2 3 (((6 7) a) 9)))
 
==> NIL

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

В данном коде определён встроенный функцию is-num-list, которая принимает в качестве аргумента список lst. Если lst — это пустой список, то возвращается t. Если первый элемент lst является числом, то функция рекурсивно вызывается для оставшейся части списка. Если первый элемент lst является вложенным списком, то функция проверяет, все ли элементы в этом списке являются числами. Если это так, то функция рекурсивно вызывается для оставшейся части вложенного списка. Если это не так, то возвращается nil. Если первый элемент lst не является ни числом, ни вложенным списком, то возвращается nil.

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


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

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

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