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
iti un enter positiun, retorna un iterador sobre una seqüència de tuples de dues components, una per cada element de la seqüència generada perit. La primera component de cada tupla és l’índex cíclic (valors entre 0 in-1, repetits cíclicament) i la segona component és cadascun dels elements deit, 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.