Вложенный Список - Lisp
Формулировка задачи:
Проверить, является ли список списком чисел, или нет
Работающий код:
Нужно к этому добавить проверку и на вложенный список(если вложенный, выводил true)
(defun check (lst) (cond ((Null lst) "yes" ) ((numberp (car lst)) (check (cdr lst)) ) ( "no" ) ) )
Решение задачи: «Вложенный Список»
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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д