Генераторы и итераторы · 9 из 16
Окно из трёх
Печь ведёт себя ровно до тех пор, пока три буханки подряд выходят похожего веса. Тамара смотрит на ленту именно так: три последние, потом сдвинулась на одну — снова три последние. Запоминать всю смену ей для этого не нужно, в голове помещается ровно три числа.
Что сделать
Смотрите на ленту так, как Тамара, — тремя последними буханками со сдвигом на одну.
Что приходит
potok— поток значенийshirina— сколько значений в окне, целое больше нуля
Что вернуть
Генератор: отдаёт кортежи из shirina подряд идущих значений, каждый следующий сдвинут на одно; в памяти — только окно.
Допишите функцию okna в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Окно шириной 3 по [1, 2, 3, 4, 5]: (1, 2, 3), (2, 3, 4), (3, 4, 5). Значений меньше трёх — ничего.
list(okna([1, 2, 3, 4, 5], 3))
[(1, 2, 3), (2, 3, 4), (3, 4, 5)]
Функция принимает поток значений и ширину окна (целое больше нуля). Отдаёт кортежи из подряд идущих значений: первый кортеж — первые сколько-то значений, каждый следующий сдвинут на одно. Если значений меньше ширины окна, не отдаётся ничего. В памяти держится только текущее окно, а не весь поток.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.