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