3. Seqüència de racionals (3 punts)¶
Avís
Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.
Definim la següent seqüència (potencialment infinita) de nombres racionals \(S(u) = r_1 \, r_2 \, r_3 \, \dots\), que depèn d’un nombre enter u:
on \(r_i = {p_i \over q_i}\) són les fraccions canòniques de la seqüència, és a dir, els racionals simplificats (tal com queden creats pel mòdul fractions).
En un fitxer anomenat seqrac.py, deseu-hi la funció generadora especificada a continuació:
- seqrac.sequencia(u)¶
- Paràmetres:
u – enter estrictament positiu
- Retorna:
iterador sobre la seqüència \(S(u)\)
- Tipus de retorn:
iterador de
fractions.Fraction
Per exemple:
>>> it = sequencia(3)
>>> next(it)
Fraction(1, 3)
>>> next(it)
Fraction(9, 2)
>>> next(it)
Fraction(19, 7)
>>> for i in range(10):
... print(next(it), end=",")
39/22,79/67,159/202,101/53,203/160,11/13,39/22,79/67,159/202,101/53,
Disposeu d’un joc de proves més complet al fitxer tests-seqrac.txt