1. Aeroport (3 punts)

En un fitxer tenim la informació de tots els vols que surten d’un aeroport. El format d’aquest fitxer és el següent: per a cada línia hi ha la ciutat de destí, codi del vol, hora de sortida, hora d’arribada, temps de retard previst. Cada part d’aquesta informació està separada amb ;.

Pots descarregar el fitxer d’exemple aeroport.txt amb el següent contingut:

Siena;SIE24A;09:23;11:12;0
Roma;ROM4562TE;08:10;09:55;10
Trieste;TR234WW;07:25;09:34;0
Roma;ROM778R;10:04;12:00;3
Siena;SI562E;12:34;13:55;10
Florencia;FR452FF;12:12;14:02;0
Roma;ROM556E;12:14;15:12;20
Siena;SIE24A;19:23;21:12;30
Roma;ROYY562TE;12:10;14:55;20
Trieste;TRUU4WW;07:25;09:34;0
Roma;RORD78R;12:04;15:00;3
Siena;SITTWE;16:34;15:55;40
Florencia;FR4TTFF;13:12;15:02;0
Roma;ROM556E;15:14;17:12;20

Com podeu observar l’hora de sortida i d’arribada té el format: HH:MM. El temps de retard previst ve donat en minuts (com un enter).

Es demana que implementeu una funció anomenada

destinacions(nomf, retard_max)

tal que donat un string que representa el nom d’un fitxer com el descrit i un enter retard_max que diu el màxim de retard que podem admetre, retorna un diccionari amb les claus de totes les ciutats de destí per a les quals hi ha algun vol amb un retard inferior o igual a retard_max i com a valor la llista dels codis dels vols a aquest destí que compleixen aquesta condició.

El diccionari ha de complir que les llistes resultants estiguin ordenades alfabèticament.

La solució s’ha de lliurar a la tasca d’Atenea en el fitxer aeroport.py. La funció ha de passar el següent doctest:

>>> d1=destinacions('aeroport.txt', 10)
>>> if d1!={'Siena': ['SI562E', 'SIE24A'], 'Roma': ['ROM4562TE', 'ROM778R', 'RORD78R'], 'Trieste': ['TR234WW', 'TRUU4WW'], 'Florencia': ['FR452FF', 'FR4TTFF']}:
...    print (d1)

>>> d2=destinacions('aeroport.txt', 30)
>>> if d2 != {'Siena': ['SI562E', 'SIE24A', 'SIE24A'], 'Roma': ['ROM4562TE', 'ROM556E', 'ROM556E', 'ROM778R', 'RORD78R', 'ROYY562TE'], 'Trieste': ['TR234WW', 'TRUU4WW'], 'Florencia': ['FR452FF', 'FR4TTFF']}:
...    print (d2)

>>> d3=destinacions('aeroport.txt', 5)
>>> if d3 != {'Siena': ['SIE24A'], 'Trieste': ['TR234WW', 'TRUU4WW'], 'Roma': ['ROM778R', 'RORD78R'], 'Florencia': ['FR452FF', 'FR4TTFF']}:
...    print (d3)

>>> d4=destinacions('aeroport.txt', 2)
>>> if d4!= {'Siena': ['SIE24A'], 'Trieste': ['TR234WW', 'TRUU4WW'], 'Florencia': ['FR452FF', 'FR4TTFF']}:
...    print (d4)

>>> d5=destinacions('aeroport.txt', 0)
>>> if d5!= {'Siena': ['SIE24A'], 'Trieste': ['TR234WW', 'TRUU4WW'], 'Florencia': ['FR452FF', 'FR4TTFF']}:
...    print (d5)

Nota

Pots descarregar el fitxer amb tests test-aeroport.txt i una solució de aeroport.py.