Python: Слияние очередей

Python: Декларативное программирование 5 сообщений
Обновлено: 14 сент., 06:08
79
Студентов
67%
Завершения

src/solution.py

Внимание, это задание имеет повышенную сложность!

Вам предстоит реализовать функцию, выполняющую роль балансировщика очередей. Функция должна принимать произвольное количество аргументов-iterable и возвращать новый iterable. Возвращаемый iterable должен выдавать значения по одному из каждой не пустой очереди (аргумента) и переходить к следующей очереди по кругу, пока все очереди не опустеют. Переходить от очереди к очереди следует в том порядке, в котором аргументы были переданы в функцию.

from solution import round_robin
list(round_robin())  # аргументов может и не быть!
# []
# входные очереди могут быть разной длины
list(round_robin("ab", "QWE"))
# ['a', 'Q', 'b', 'W', 'E']
# очередь должна быть ленивой
# ведь любой источник может быть бесконечным, как count()
from itertools import islice, count
list(islice(round_robin(count(), "abc"), 10))
# [0, 'a', 1, 'b', 2, 'c', 3, 4, 5, 6]

Для полного доступа к испытанию нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов