Comptador cíclic

Avís

Per a resoldre aquest exercici no es poden fer servir iteracions (ni for ni while ), només les funcions predefinides de Python i les dels mòduls itertools, functools i operator. Tampoc es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements dels iteradors.

Dissenyeu la funció següent i deseu-la al mòdul ciclic (fitxer ciclic.py):

ciclic.comptador_ciclic(it, n)

Donat un iterador it i un enter positiu n, retorna un iterador sobre una seqüència de tuples de dues components, una per cada element de la seqüència generada per it. La primera component de cada tupla és l’índex cíclic (valors entre 0 i n-1, repetits cíclicament) i la segona component és cadascun dels elements de it, en el mateix ordre. Per exemple:

>>> from ciclic import comptador_ciclic

>>> s = iter('ABCDEFGHIJ')
>>> z = comptador_ciclic(s, 3)
>>> for elem in z:
...    print(elem, end='-')
(0, 'A')-(1, 'B')-(2, 'C')-(0, 'D')-(1, 'E')-(2, 'F')-(0, 'G')-(1, 'H')-(2, 'I')-(0, 'J')-
>>> s = iter('ABCDEFGHIJ')
>>> for elem in comptador_ciclic(s, 5):
...    print(elem, end='-')
(0, 'A')-(1, 'B')-(2, 'C')-(3, 'D')-(4, 'E')-(0, 'F')-(1, 'G')-(2, 'H')-(3, 'I')-(4, 'J')-

Disposeu de jocs de prova en el fitxer test-ciclic.txt.

Nota

Disposeu d’una solució de l’exercici al fitxer ciclic.py.