1. Més grafs d’amistats¶
En aquesta pregunta treballarem amb un grafs d’amistats que ja coneixeu, una instància de la classe Graph on els nodes són noms de persones i una aresta entre dos nodes indica una relació d’amistat directa entre dues persones. Ara bé, haurem afegit l’atribut 'any' a cada aresta, per indicar l’any en què es van coneixer les persones (un nombre enter). Vegeu-ne un exemple:
Nota
Per tal de poder fer proves fàcilment us proporcionem el fitxer crea.py, on hi ha la funció graf_exemple() que crea i retorna el graf de l’exemple de la figura.
1.1. Funció amigables (2 punts)¶
Al fitxer mes_amistats.py (mòdul mes_amistats), escriviu-hi
la funció següent:
- mes_amistats.amigables(g)¶
Essent g el graf de l’exemple, aquesta funció ha de respondre així:
>>> from mes_amistats import amigables
>>> amigables(g) == {'Anna', 'Quim', 'Sergi', 'Pep', 'Clara', 'Fina'}
True
>>> g.add_edge('Clara', 'Sergi', any=2024)
>>> amigables(g) == {'Sergi', 'Clara'}
True
>>> g.add_edge('Lluís', 'Sergi', any=2025)
>>> amigables(g)
{'Sergi'}
Disposeu d’un joc de proves al fitxer tests-amigables.txt.
1.2. Funció amistats_any (2 punts)¶
Al fitxer mes_amistats.py (mòdul mes_amistats), escriviu-hi
la funció següent:
- mes_amistats.amistats_any(g, y)¶
Essent g el graf de l’exemple, aquesta funció ha de respondre així:
>>> from mes_amistats import amistats_any
>>> amistats_any(g, 2011)
['Daniel', 'Fina', 'Pere', 'Sergi']
>>> amistats_any(g, 2014)
['Fina', 'Lluís']
>>> amistats_any(g, 2000)
[]
Disposeu d’un joc de proves al fitxer tests-any.txt.