Для заданного списка определить максимальное количество идущих подряд нулей - Lisp

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

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

Для заданного списка определить максимальное количество идущих подряд нулей, без использование встроенных функций. Считается, что списки имеют многоуровневую структуру.

Решение задачи: «Для заданного списка определить максимальное количество идущих подряд нулей»

textual
Листинг программы
  1. (defun max-zero-seq (w
  2.                      &optional (n 0) (m 0) f
  3.                      &aux (a (car w)) (d (cdr w)))
  4.   (cond ((null w) (max n m))
  5.         ((listp a) (max-zero-seq a 0 (max-zero-seq d 0 m nil) nil))
  6.         ((zerop a) (max-zero-seq d (1+ n) m t))
  7.         ((max-zero-seq d 0 (if f (max n m) m) nil))))
  8.  
  9. > (max-zero-seq '(1 2 0 0 0 (2 0 0 0 0 0 0 3) 0 0 0 0))
  10. 6
  11. > (max-zero-seq '(1 0 0 4 0 0 (1 0 0 0 0 3 (6 0 0 0) 1) 0 0 0 5))
  12. 4
  13. > (max-zero-seq '(0))
  14. 1
  15. > (max-zero-seq '())
  16. 0

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


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

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

13   голосов , оценка 4.231 из 5

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

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

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