Rodegast
Где написано что последовательность бесконечная?
Вот условия задачи, где это прослеживается
graf
В некотором физическом эксперименте показания прибора снимались с частотой 5 измерений в секунду. Эксперимент проводился в течение довольно большого времени, и в результате накопилось очень много данных.
graf
Гарантируется, что длина входной последовательности не меньше 6 и не превосходит 10 9 .
graf
На конце последовательности передается число 0.
Вот отсюда следует, что: 1) там есть устройство; 2) данных с него поступило очень много; 3) на конце последовательности маркер конца.
Когда не говорится, сколько данных поступило, это значит, что их бесконечное количество. Но так как компьютер не может хранить бесконечное количество данных, то эта бесконечность является “бесконечностью” - псевдобесконечностью. И естественно, при неопределённом количестве данных нужно как-то определять, что они закончились в этой “бесконечности”. Для этого и существует маркер конца. Он может как прийти в конце, так и не прийти. В этом его отличие от заданной заранее длины, которая после своего задания не может внезапно сдвинуться в большую сторону или вообще пропасть куда-то.
Что касается устройств. Устройства работают непрерывно и не всегда можно сказать, что мы начинаем обрабатывать данные с устройства, только когда оно выключается. Оно может и не выключаться никогда, но данные с него уже поступили и пригодны для обработки. К тем данным, которые уже поступили, добавляются данные, которые поступают дальше. Далеко не всегда можно сначала обработать данные на одном куске, потом обработать данные на следующем куске, а потом сравнить эти результаты и взять что-то среднее между ними. Не всегда можно разбить последовательность и обработать её по частям с сохранением свойств последовательности в её целом состоянии. В частности, в этой задаче нельзя использовать в обработке данных последние пять элементов последовательности, хотя они точно так же поступают на обработку и ничем не отличаются от предыдущих данных. Это пример того, как вся последовательность и только часть последовательности отличаются между собой по способу обработки. Для части последовательности обрабатывается всё одинаково; для целой последовательности обрабатывается всё только до последних пяти элементов последовательности.
Пример
Непрерывная последовательность, которая так же непрерывно обрабатывается:
раз два три четыре пять
Непрерывная последовательность, которая обрабатывается фиксированными частями:
раз два
три чет
ыре пят
ь
В результате первой обработки мы получим пять осмысленных слов.
В результатет второй обработки мы получим семь слов, из которых только три слова будут осмысленными, а остальные слова будут просто наборами букв.
RodegastПри том, что ты его запостил, когда он не должен вообще использоваться при обработке данных в этой задаче.
> а range() , в свою очередь, требует изначального знания, сколько элементов будет в последовательности.
Ну и причём тут range?
range() там можно использовать только для самого первого заполенния буфера, да и то только для удобства (в range() даже необходимости нет).