#!/usr/bin/env python3
# Находит максимальную длину подпоследовательности из нулей
def maxsl(seq, val):
n = t = 0
for i in seq:
if i == val:
t += 1
else:
if t > n:
n = t
t = 0
if t > n:
n = t
return n
def main():
lst = [1, 2, 3, 4, 5, 0, 0, 0, 4, 0, 4, 0, 0]
print(maxsl(lst, 0))
if __name__ == '__main__':
main()
maxseq.doct
>>> from maxseq import maxsl as f
>>> f([], 0)
0
>>> f([1], 0)
0
>>> f([1, 1], 0)
0
>>> f([0], 0)
1
>>> f([0, 0], 0)
2
>>> f([0, 0, 0], 0)
3
>>> f([0, 1], 0)
1
>>> f([1, 0], 0)
1
>>> f([0, 0, 1], 0)
2
>>> f([1, 0, 0], 0)
2
>>> f([0, 1, 0], 0)
1
>>> f([0, 1, 1, 0], 0)
1
>>> f([0, 0, 1, 1, 0], 0)
2
>>> f([0, 1, 1, 0, 0], 0)
2
>>> f([0, 1, 0, 1], 0)
1
>>> f([0, 1, 0, 0, 1], 0)
2
>>> f([0, 0, 1, 0, 1], 0)
2
>>> f([0, 0, 1, 0, 1, 0, 0, 0], 0)
3
>>> f([0, 0, 1, 0, 0, 0, 1, 0, 0], 0)
3
>>> f([0, 0, 0, 1, 0, 0, 1, 0, 0], 0)
3
>>> f([0, 0, 1], 1)
1
[guest@localhost py]$ python3 -mdoctest maxseq.doct -v
Trying:
from maxseq import maxsl as f
Expecting nothing
ok
Trying:
f([], 0)
Expecting:
0
ok
Trying:
f([1], 0)
Expecting:
0
ok
Trying:
f([1, 1], 0)
Expecting:
0
ok
Trying:
f([0], 0)
Expecting:
1
ok
Trying:
f([0, 0], 0)
Expecting:
2
ok
Trying:
f([0, 0, 0], 0)
Expecting:
3
ok
Trying:
f([0, 1], 0)
Expecting:
1
ok
Trying:
f([1, 0], 0)
Expecting:
1
ok
Trying:
f([0, 0, 1], 0)
Expecting:
2
ok
Trying:
f([1, 0, 0], 0)
Expecting:
2
ok
Trying:
f([0, 1, 0], 0)
Expecting:
1
ok
Trying:
f([0, 1, 1, 0], 0)
Expecting:
1
ok
Trying:
f([0, 0, 1, 1, 0], 0)
Expecting:
2
ok
Trying:
f([0, 1, 1, 0, 0], 0)
Expecting:
2
ok
Trying:
f([0, 1, 0, 1], 0)
Expecting:
1
ok
Trying:
f([0, 1, 0, 0, 1], 0)
Expecting:
2
ok
Trying:
f([0, 0, 1, 0, 1], 0)
Expecting:
2
ok
Trying:
f([0, 0, 1, 0, 1, 0, 0, 0], 0)
Expecting:
3
ok
Trying:
f([0, 0, 1, 0, 0, 0, 1, 0, 0], 0)
Expecting:
3
ok
Trying:
f([0, 0, 0, 1, 0, 0, 1, 0, 0], 0)
Expecting:
3
ok
Trying:
f([0, 0, 1], 1)
Expecting:
1
ok
1 items passed all tests:
22 tests in maxseq.doct
22 tests in 1 items.
22 passed and 0 failed.
Test passed.
[guest@localhost py]$