Генераторы и итераторы · 10 из 16
Подряд одного сорта
Печь перенастраивают между сортами, и Сан Санычу важно, сколько буханок прошло между перенастройками. Не сколько всего халы за ночь, а именно так: двенадцать бородинских подряд, потом восемь батонов, потом снова бородинский — значит, между ними печь трогали.
Что сделать
Посчитайте, сколько буханок одного сорта прошло подряд между перенастройками печи.
Что приходит
potok— поток названий сортов
Что вернуть
Генератор: отдаёт пары (сорт, сколько подряд) в порядке появления; сорт, вернувшийся после другого, — новая пара.
Допишите функцию gruppy в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Бородинский, бородинский, батон, бородинский — это три серии: ("бородинский", 2), ("батон", 1), ("бородинский", 1).
list(gruppy(["бородинский", "бородинский", "батон", "бородинский"]))
[('бородинский', 2), ('батон', 1), ('бородинский', 1)]
Функция принимает поток названий сортов (строки).
Отдаёт пары «сорт и сколько его прошло подряд», в том порядке, в котором сорта шли. Сорт, встретившийся снова после другого, даёт новую пару, а не добавляется к прежней. На пустом потоке не отдаётся ничего. Поток проходится один раз, и в памяти держится только текущая группа.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.