Для заданного списка определить максимальное количество идущих подряд нулей - Lisp
Формулировка задачи:
Для заданного списка определить максимальное количество идущих подряд нулей, без использование встроенных функций.
Считается, что списки имеют многоуровневую структуру.
Решение задачи: «Для заданного списка определить максимальное количество идущих подряд нулей»
textual
Листинг программы
- (defun max-zero-seq (w
- &optional (n 0) (m 0) f
- &aux (a (car w)) (d (cdr w)))
- (cond ((null w) (max n m))
- ((listp a) (max-zero-seq a 0 (max-zero-seq d 0 m nil) nil))
- ((zerop a) (max-zero-seq d (1+ n) m t))
- ((max-zero-seq d 0 (if f (max n m) m) nil))))
- > (max-zero-seq '(1 2 0 0 0 (2 0 0 0 0 0 0 3) 0 0 0 0))
- 6
- > (max-zero-seq '(1 0 0 4 0 0 (1 0 0 0 0 3 (6 0 0 0) 1) 0 0 0 5))
- 4
- > (max-zero-seq '(0))
- 1
- > (max-zero-seq '())
- 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д