3. Aules [3p]

Avís

Per a 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 no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements dels iteradors.

Al mòdul aules (fitxer aules.py) hi ha definida la classe Aula:

class aules.Aula(id, planta, tipus, capacitat)

Crea una instància de la classe que representa una aula amb l’identificador id , situada a la planta p, del tipus t str) i amb capacitat per ns alumnes.

Atributs:

id

Id de l’aula (str)

planta

Planta on esta situada l’aula (int)

tipus

Tipus de l’aula (str) que pot ser 'Inf', 'Mag' o 'Lab'

capacitat

Capacitat de l’aula (int)

La gent de planificació de l’ETSEIB vol poder consultar quines aules hi ha d’un determinat tipus on caben un nombre determinat d’alumnes. Amb aquest fi es demana que al mòdul plan (fitxer plan.py) facis funció següent:

plan.sel_aules(it, tps, na)
Paràmetres:
  • it – un iterador sobre una sequència d’aules (Aula)

  • tipus – un tipus d’aula (str)

  • na – el nombre d’alumnes (int)

Retorna:

un iterador sobre una seqüència d’identificadors de les aules de l’iterador it que són del tipus tps i amb capacitat per encabir na alumnes, en el mateix ordre d” it.

Per exemple:


>>> it1 = iter([Aula('H5.1', 5, 'Info', 49), Aula('H5.3', 5, 'Info', 35),  Aula('H5.4', 5, 'Info', 24), Aula('H8.1', 8, 'Info', 18)])
>>> it2 = sel_aules(it1, 'Info', 30)
>>> it2 == iter(it2)
True
>>> list(it2)
['H5.1', 'H5.3']

Tens a disposició un joc de proves més complet al fitxer tests-sel_aules.txt. Per a validar la teva solució cal baixar el fitxer aules.py (aules.py) però que NO s’ha de pujar a la tasca.