Для заданного списка определить максимальное количество идущих подряд нулей - 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

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


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

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

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