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 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
.