1. Sumes parcials d’una seqüència (5 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.

Es demana que dissenyeu la funció generadora especificada a continuació i la deseu en un fitxer anomenat sumesp.py:

sumesp.sumes_parcials(it1, it2)
Paràmetres:
  • it1 – iterador sobre una seqüència S de nombres enters.

  • it2 – iterador sobre una seqüència de nombres enters positius S2, formada per \(N_1 N_2 N_3 N_4 N_5 ...\).

Retorna:

iterador sobre la seqüència de sumes parcials dels nombres de S: la suma dels \(N_1\) primers nombres de S, la suma dels \(N_2\) següents, la suma dels \(N_3\) següents, etc.

En resoldre l’exercici, podeu suposar que l’iterador it2 no és buit i també que la seqüència S té com a mínim \(\sum_{i=1}^k {N_i}\) elements, on k és el nombre d’elements de S2. Observeu que si it2 genera una seqüència infinita, it1 també ho ha de ser.

Per exemple,


>>> it1 = iter(range(100))
>>> it2 = iter([2, 5, 1, 2, 6])
>>> itsum = sumes_parcials(it1, it2)
>>> next(itsum)  # 0+1 
1
>>> next(itsum)  # 2+3+4+5+6 
20
>>> next(itsum)  # 7
7
>>> next(itsum)  # 8+9
17
>>> next(itsum)  # 10+11+12+13+14+15
75
>>> next(itsum, 'final')
'final'

Disposeu d’un joc de proves més complet al fitxer tests-sumesp.txt