1. Màxims relatius (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 els elements d’un iterador.

Es volen trobar els màxims relatius d’una successió de nombres enters. Entendrem que un màxim relatiu és un valor de la successió tal que és estrictament més gran que el valor anterior i el posterior. Per exemple, els màxims relatius de la successió

72 34 55 67 30 10 10 -45 -60 18 90 88 55 32 44 11 89

són els nombres 67, 90 i 44.

Fixeu-vos que, segons la definició, el primer i el darrer nombre de la sèrie mai no es consideren màxims relatius.

Es demana que, en un fitxer anomenat maxrel.py, hi deseu la funció generadora especificada a continuació:

maxrel.maxims(it)
Paràmetres:

it – iterador sobre una sèqüència de valors enters.

Retorna:

un iterador dels màxims relatius de it, en el mateix ordre que en la seqüència original.

Per exemple:


>>> s = iter([72, 34, 55, 67, 30, 10, 10, -45, -60, 18, 90, 88, 55, 32, 44, 11, 89])
>>> it = maxims(s)
>>> next(it)
67
>>> next(it)
90
>>> next(it)
44
>>> next(it, 'FI')  # l'iterador s'ha exhaurit
'FI'

Disposeu d’un joc de proves més complet en el fitxer tests-maxrel.txt