1. Grafs: Més linies de metro (3.5 punts)¶
En aquest problema treballarem amb un graf que representa la xarxa de metro d’una ciutat , que ja coneixeu. Per crear aquest graf podeu utilitzar la funció crea_xarxa_metro() del mòdul crea_metro_bcn (fitxer crea_metro_bcn.py) que utilitza les dades del fitxer metrobcn.txt. Cal que us descarregueu tots dos fitxers, però no els heu de pujar a la tasca. Només pugeu el fitxer mes_metro.py amb les funcions descrites a continuació.
1.1. Funció quines_linies¶
Al mòdul mes_metro (fitxer mes_metro.py), implementeu-hi la funció següent:
- mes_metro.quines_linies(g, p1, p2)¶
- Paràmetres:
g – graf de NetworkX que representa una xarxa de línies metro
p1 – nom d’una parada de metro
p2 – nom d’una segona parada de metro (diferent de p1)
- Retorna:
Llista ordenada amb els noms de totes les línies de metro a les qual pertanyen ambdues parades p1 i p2. En cas que les parades no pertanyin a una mateixa línia, retorna la llista buida.
Per exemple, si g és el graf de les línies de metro de Barcelona, el de l’exemple de l’enunciat original del problema, aquesta funció ha de respondre així:
>>> from mes_metro import quines_linies
>>> quines_linies(g, 'Lesseps', 'Drassanes')
['L3']
>>> quines_linies(g, 'Girona', 'Hostafrancs')
[]
>>> quines_linies(g, 'Diagonal', 'Sants Estacio')
['L3', 'L5']
Disposeu de més jocs de proves al fitxer test-quineslinies.txt, el qual utilitza els fitxers crea_metro_bcn.py i metrobcn.txt esmentats al principi de l’enunciat (cal que us els descarregueu).
1.2. Funció transbordaments¶
Al mateix mòdul mes_metro (fitxer mes_metro.py), implementeu-hi la funció següent:
- mes_metro.transbordaments(g, lin)¶
- Paràmetres:
g – graf de NetworkX que representa una xarxa de línies metro
lin – nom d’una de les línies de metro
- Retorna:
Llista ordenada de línies de metro que connecten amb la línia donada lin, és a dir, llista de línies de metro a les quals pot fer transbordament un passatger que és a la línia lin.
Per exemple, si g és el graf de les línies de metro de Barcelona, el de l’exemple de l’enunciat original del problema, aquesta funció ha de respondre així:
>>> from mes_metro import transbordaments
>>> transbordaments(g, 'L1')
['L2', 'L3', 'L4', 'L5', 'L9']
>>> transbordaments(g, 'L3')
['FM', 'L1', 'L11', 'L2', 'L4', 'L5']
>>> transbordaments(g, 'L10')
['L2', 'L9']
Disposeu de més jocs de proves al fitxer test-transbordaments.txt, el qual utilitza els fitxers crea_metro_bcn.py i metrobcn.txt esmentats al principi de l’enunciat (cal que us els descarregueu). metrobcn.txt (cal que us el descarregueu).