Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 1 |
Требуется реализовать на языке Python класс stack_chain
. У класса должен быть следующий интерфейс:
from __future__ import annotations
from collections.abc import Iterable, Iterator
class stack_chain:
def __init__(self, *iterables: Iterable):
"""Iterates over iterables in Last In First Out order.
Arguments:
iterables: iterables to iterate over"""
raise NotImplementedError()
def __iter__(self) -> Iterator:
"""Returns iterator over stored iterables"""
raise NotImplementedError()
def __iadd__(self, iterable: Iterable) -> stack_chain:
"""Add a new iterable on top of stack in-place
Arguments:
iterable: iterable to add
Returns:
self
"""
raise NotImplementedError()
Класс должен удовлетворять Iterable
. stack_chain
итерируется по iterables
в порядке «последним пришёл — первым ушёл». Объект должен позволять добавлять новый Iterable
на вершину стека с использованием оператора +=
.
Возвращаемый итератор должен позволять продолжать итерацию после вызова исключения StopIteration
, если в stack_chain
был добавлен новый Iterable
.
Код решения должен содержать только импортируемые модули, определение и реализацию класса.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | print(*stack_chain(range(3), range(2, -1, -1), (i * i for i in range(3))))
|
|
2 | a = stack_chain(range(3))
for i in a:
a += [i - 1] * i
print(i, end=' ')
|
|