Задача 6C. Take

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Требуется реализовать на языке программирования Python функцию

from typing import Generator, Iterable, Optional

def take(iterable: Iterable, *, skip: int = 0, step: int = 1, count: Optional[int] = None) -> Generator:
    '''Yields every `step`-th value from `iterable` skipping first `skip` values.
    If `count` is not None yields this many values at most.
        
    Args:
        iterable: Iterable to take values from
        skip: Number of values to skip from the beginning, non-negative integer
        step: Skip `step` - 1 values between every yield, positive integer
        count: Yields this many values at most, None or non-negative integer

    Raises:
        ValueError:
            `skip` or `count` is less than 0
            `step` is less than 1
        TypeError:
            `skip`, `step` is not an int or `iterable` is not an Iterable
            `count` is not an int or None

    '''
    pass

Формат выходных данных

Код решения должен содержать только определение и реализацию класса.

Примеры тестов

Стандартный вход Стандартный выход
1
print(*take(range(100), skip=5, step=5, count=5))
5 10 15 20 25

0.094s 0.021s 13