2. Viatge (3 punts)

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.

Una viatgera molt exclusiva vol viatjar en un vagó de tren on hi càpiguen quatre persones assegudes i cap d’empeus. A partir d’un iterador d’instàncies de la classe Vago que ja coneixeu (vegeu Ús_de_la_classe_vago), dissenyeu una funció que retorni un iterador d’identificadors de vagons que cumpleixen la condició esmentada.

Així doncs, en un fitxer anomenat viatge.py deseu la funció especificada a continuació.

viatge.seleccio(it)
Paràmetres:

it – un iterador sobre una sequència de vagons (Vago)

Retorna:

un iterador sobre una seqüència d’identificadors de vagons de l’iterador it que tinguin capacitat per 4 persones assegudes i cap d’empeus, en el mateix ordre que it.

Per exemple:


>>> it1 = list([Vago('AB45', 23, 10), Vago('CB25', 4, 10), Vago('XX22', 4, 0), Vago('XX56', 4, 0), Vago('XY45', 0, 4)])
>>> it2 = seleccio(it1)
>>> next(it2)
'XX22'
>>> next(it2)
'XX56'
>>> next(it2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

Per provar el vostre codi i passar els doctests, cal que descarregueu el fitxer vagons.py de l’enunciat de Ús_de_la_classe_Vago o directament d’aquí (vagons.py). Disposeu d’un joc de proves més complet al fitxer tests-seleccio.txt. No pugeu els fitxers vagons.py a la tasca, només viatge.py.