1. Màxims i Mínims Locals (3 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.

Donada una seqüència de nombres finita, definim màxim (mínim) local com a tot nombre que no és ni el primer ni el darrer, i va precedit i seguit de nombres estrictament menors (majors). A l’exemple d’aquí sota, el 3 que està situat a la posició 2 de la llista l és un màxim local perquè està precedit d’un 2 i seguit d’un 2.

Al mòdul maxmin_locals (fitxer maxmin_locals.py) es demana que facis la funció generadora Python següent:

maxmin_locals.maxmin_locals(it)
Paràmetres:

it – iterador sobre una seqüència d’enters

Retorna:

iterador sobre la seqüència de màxims i mínims locals de it. Per a cada màxim i mínim local es genera una tupla amb els valors següents:

  • el str 'max' ('min') segons s’escaigui

  • un int amb el valor del màxim (mínim)

  • un int amb la posició on s’ha trobat el màxim (mínim) local

Per exemple:


>>> l = [1, 2, 3, 2, 1, 2, 3, 0, 2, 1]
>>> it = iter(l)
>>> itsol = maxmin_locals(it)
>>> itsol == iter(itsol) and list(itsol) == [('max', 3, 2), ('min', 1, 4), ('max', 3, 6), ('min', 0, 7), ('max', 2, 8)]
True

Disposes d’un joc de proves més complet en el fitxer maxmin_locals-test.txt.