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.