2. Fraccions aparents (5 punts)¶
Avís
Per 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 desar tots els
elements dels iteradors.
Tenim una sèrie S de números enters estrictament positius, on cada parella de números consecutius li fem correspondre una fracció. Per exemple, la següent sèrie
1, 2, 3, 1, 1, 10, 5
correspon a la següent sèrie de fraccions
1/2, 2/3, 3/1, 1/1, 1/10, 10/5
Donada la sèrie de números enters estrictament positius S, es vol extreure la sèrie de números que va acumulant d’esquerra a dreta la suma de totes les fraccions aparents que conté, és a dir, la sèrie de sumes parcials. Recorda que una fracció aparent és aquella tal que el resultat de la divisió és entera. En el cas de l’exemple, les fraccions aparents corresponents a les fraccions d”S són
3/1, 1/1, 10/5
i la sèrie de sumes parcials és
3, 4, 6
Dissenya la funció següent i desa-la al mòdul aparents (fitxer aparents.py):
- aparents.calcula_suma_aparents(it)¶
- Param:
it: iterador sobre una sèrie S d’enters estrictament positius
- Retorna:
iterador que retorna la sèrie de sumes parcials de fraccions aparents dels parells consecutis de S
Per exemple,
>>> for x in calcula_suma_aparents(iter([1,3,2,2,1,1,10,5,1,3,2])):
... print(x,end=',')
1,3,4,6,11,
>>> it = iter([1,1,2,3,4,5,6,7,8,9,1])
>>> it2 = calcula_suma_aparents(it)
>>> for x in it2:
... print(x,end=',')
1,10,
Disposes d’un joc de proves més complet al fitxer tests-aparents.txt.