Solució de l’examen Final - Torn 2¶
- Organització:
Secció ETSEIB, Departament de Ciències de la Computació, UPC
- Data:
19 de gener de 2026
- Copyright:
Reconeixement-CompartirIgual 4.0 No adaptada de Creative Commons
Jocs de proves
Aquests jocs de proves fan servir el fitxer
esquirols2.csv.
Els exemples que compten per la nota són només els que van seguits de
# doctesttag: +TAG=...
>>> import networkx as nx
>>> import pandas as pd
>>> ares1 = [
... ('Quim', 'Pep', {'any' : 2018}), ('Quim', 'Jordi', {'any' : 2012}),
... ('Quim', 'Maria', {'any' : 2010}), ('Pep', 'Anna', {'any' : 2015}),
... ('Pep', 'Clara', {'any' : 2015}), ('Maria', 'Anna', {'any' : 2022}),
... ('Anna', 'Clara', {'any' : 2015}), ('Jordi', 'Clara', {'any' : 2019}),
... ('Sofia', 'Fina', {'any' : 2019}),
... ('Sofia', 'Lluís', {'any' : 2013}), ('Fina', 'Lluís', {'any' : 2014}),
... ('Fina', 'Sergi', {'any' : 2011}), ('Olga', 'Sergi', {'any' : 2017}),
... ('Daniel', 'Sergi', {'any' : 2010}), ('Daniel', 'Pere', {'any' : 2011}),
... ]
>>> ares2 = [
... ('Jordi', 'Pep', {'any' : 2018}), ('Clara', 'Maria', {'any' : 2012}),
... ('Fina', 'Daniel', {'any' : 2015}), ('Sergi', 'Artur', {'any' : 2012}),
... ('Pere', 'Artur', {'any' : 2011}), ('Artur', 'Lola', {'any' : 2012}),
... ('Elena', 'Rut', {'any': 2022}), ('Ton', 'Elena', {'any': 2022}),
... ('Rut', 'Ton', {'any': 2022}),
... ]
>>> nodes = [ 'Ester', 'Manel', 'Montse' ]
>>> g1 = nx.Graph()
>>> g1.add_nodes_from(nodes)
>>> g1.add_edges_from(ares1)
>>> g2 = nx.Graph()
>>> g2.add_nodes_from(nodes)
>>> g2.add_edges_from(ares1 + ares2)
Tests comparteixen_amics¶
>>> from mes_amistats import comparteixen_amics
>>> comparteixen_amics(g1, 'Pep') == {'Anna', 'Clara'} # doctesttag: +TAG=1_comparteixen
True
>>> comparteixen_amics(g1, 'Montse') # doctesttag: +TAG=1_comparteixen
set()
>>> g1.add_edge('Fina', 'Olga', any=2010)
>>> g1.add_edge('Sofia', 'Olga', any=2012)
>>> comparteixen_amics(g1, 'Fina') == {'Sergi', 'Sofia', 'Lluís', 'Olga'} # doctesttag: +TAG=1_comparteixen
True
>>> comparteixen_amics(g2, 'Fina') == {'Sofia', 'Sergi', 'Lluís', 'Daniel'} # doctesttag: +TAG=1_comparteixen
True
>>> comparteixen_amics(g2, 'Artur') # doctesttag: +TAG=1_comparteixen
set()
>>> comparteixen_amics(g2, 'Elena') == {'Ton', 'Rut'} # doctesttag: +TAG=1_comparteixen
True
>>> g1.add_edge('Fina', 'Pere', any=2010)
>>> g1.add_edge('Pere', 'Sergi', any=2020)
>>> g1.add_edge('Fina', 'Sergi', any=2020)
>>> comparteixen_amics(g2, 'Sergi') == {'Daniel', 'Fina'} # doctesttag: +TAG=1_comparteixen
True
>>> for p in sorted(g1):
... print(sorted(comparteixen_amics(g1, p))) # doctesttag: +TAG=1_comparteixen
['Clara', 'Pep']
['Anna', 'Pep']
['Pere', 'Sergi']
[]
['Lluís', 'Olga', 'Pere', 'Sergi', 'Sofia']
[]
['Fina', 'Sofia']
[]
[]
[]
['Fina', 'Sergi', 'Sofia']
['Anna', 'Clara']
['Daniel', 'Fina', 'Sergi']
[]
['Daniel', 'Fina', 'Olga', 'Pere']
['Fina', 'Lluís', 'Olga']
>>> g3 = nx.complete_graph(6)
>>> for p in sorted(g3):
... print(sorted(comparteixen_amics(g3, p))) # doctesttag: +TAG=1_comparteixen
[1, 2, 3, 4, 5]
[0, 2, 3, 4, 5]
[0, 1, 3, 4, 5]
[0, 1, 2, 4, 5]
[0, 1, 2, 3, 5]
[0, 1, 2, 3, 4]
Tests primera_amistat¶
>>> from mes_amistats import primera_amistat
>>> primera_amistat(g1, 'Quim') # doctesttag: +TAG=1_primera
'Maria'
>>> primera_amistat(g1, 'Manel') # doctesttag: +TAG=1_primera
''
>>> g1.add_edge('Sergi', 'Pere', any=1995)
>>> primera_amistat(g1, 'Sergi') # doctesttag: +TAG=1_primera
'Pere'
>>> g1.add_edge('Sergi', 'Bernat', any=1995)
>>> primera_amistat(g1, 'Sergi') # doctesttag: +TAG=1_primera
'Bernat'
>>> primera_amistat(g2, 'Sergi') # doctesttag: +TAG=1_primera
'Daniel'
>>> primera_amistat(g2, 'Sofia') # doctesttag: +TAG=1_primera
'Lluís'
>>> primera_amistat(g2, 'Pep') # doctesttag: +TAG=1_primera
'Anna'
>>> primera_amistat(g2, 'Ton') # doctesttag: +TAG=1_primera
'Elena'
>>> for x in sorted(g1.nodes):
... print(primera_amistat(g1, x), end=',') # doctesttag: +TAG=1_primera
Clara,Sergi,Anna,Sergi,,Olga,Quim,Sofia,,Quim,,Fina,Anna,Sergi,Maria,Bernat,Olga,
>>> for x in sorted(g2.nodes):
... print(primera_amistat(g2, x), end=',') # doctesttag: +TAG=1_primera
Clara,Pere,Maria,Sergi,Rut,,Sergi,Quim,Sofia,Artur,,Quim,,Sergi,Anna,Artur,Maria,Elena,Daniel,Lluís,Elena,
Tests minims_locals¶
>>> from minims import minims_locals
>>> minims_locals([100, -3]) # doctesttag: +TAG=2_minims
[]
>>> minims_locals([1, 5, 1, 7, -10, -20, 10]) # doctesttag: +TAG=2_minims
[1, -20]
>>> minims_locals([4, 8, 2, 1, -1]) # doctesttag: +TAG=2_minims
[]
>>> minims_locals([1, 6, 12, 18, 20]) # doctesttag: +TAG=2_minims
[]
>>> minims_locals([1, 1, 6, 6, 12, 3, 18, 2, 3, 20]) # doctesttag: +TAG=2_minims
[3, 2]
>>> minims_locals([(-2)**x for x in range(30)]) # doctesttag: +TAG=2_minims
[-2, -8, -32, -128, -512, -2048, -8192, -32768, -131072, -524288, -2097152, -8388608, -33554432, -134217728]
>>> minims_locals([2, 3]*100) # doctesttag: +TAG=2_minims
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
>>> minims_locals([(-1)**x+10+x for x in range(50)]) # doctesttag: +TAG=2_minims
[10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56]
Tests activitat¶
>>> df = pd.read_csv("esquirols2.csv")
>>> from esquirols import activitat
>>> activitat(df, 'McCarren Park', 'Running') # doctesttag: +TAG=3_activitat
9
>>> activitat(df, 'Columbus Park', 'Climbing') # doctesttag: +TAG=3_activitat
2
>>> activitat(df, 'Fort Tryon Park', 'Eating') # doctesttag: +TAG=3_activitat
2
>>> activitat(df, 'McCarren Park', 'Climbing') # doctesttag: +TAG=3_activitat
11
>>> activitat(df, 'Highbridge Park', 'Eating') # doctesttag: +TAG=3_activitat
2
>>> activitat(df, 'Marcus Garvey Park', 'Climbing') # doctesttag: +TAG=3_activitat
18
>>> activitat(df, 'Madison Square Park', 'Foraging') # doctesttag: +TAG=3_activitat
4
>>> activitat(df, 'Columbus Park', 'Jumping') # doctesttag: +TAG=3_activitat
0
>>> for a in ['Foraging', 'Eating', 'Running', 'Climbing', 'Nesting', 'Chasing',
... 'Sleeping', 'Sitting', 'Vocalization', 'Jump', 'Sitting', 'Hanging']:
... print(activitat(df, 'Chiqui Park', a), end=',') # doctesttag: +TAG=3_activitat
28,16,14,20,1,9,0,5,0,0,5,2,
>>> for p in ['Fort Tryon Park', 'Chiqui Park', 'J. Hood Wright Park',
... 'Highbridge Park', 'St. Nicholas Park',
... 'Riverside Park (Section Near Grant Memorial)',
... 'Marcus Garvey Park', 'Madison Square Park', 'Union Square Park',
... 'Stuyvesant Square Park', 'Washington Square Park',
... 'Tompkins Square Park', 'John V. Lindsay East River Park',
... 'Seward Park', 'Corlears Hook Park', 'Columbus Park',
... 'City Hall Park', 'Battery Park', 'Msgr. McGolrick Park',
... 'McCarren Park']:
... print(activitat(df, p, 'Running'), end=',') # doctesttag: +TAG=3_activitat
1,14,5,7,2,5,1,2,1,0,0,1,3,1,6,1,1,2,2,9,
Tests parc_max_color¶
>>> df = pd.read_csv("esquirols2.csv")
>>> from esquirols import parc_max_color
>>> parc_max_color(df, 'Gray') # doctesttag: +TAG=3_parc
'Chiqui Park'
>>> parc_max_color(df, 'Cinnamon') # doctesttag: +TAG=3_parc
'McCarren Park'
>>> parc_max_color(df, 'Black') # doctesttag: +TAG=3_parc
'Stuyvesant Square Park'
>>> parc_max_color(df.iloc[:100], 'Black') # doctesttag: +TAG=3_parc
'St. Nicholas Park'
>>> parc_max_color(df.iloc[::5], 'Black') # doctesttag: +TAG=3_parc
'Stuyvesant Square Park'
>>> parc_max_color(df.iloc[:100:3], 'Gray') # doctesttag: +TAG=3_parc
'J. Hood Wright Park'
>>> parc_max_color(df.iloc[100::4], 'Gray') # doctesttag: +TAG=3_parc
'Chiqui Park'
>>> parc_max_color(df.iloc[:100], 'Cinnamon') # doctesttag: +TAG=3_parc
'Chiqui Park'
>>> parc_max_color(df.iloc[100:130], 'Black') # doctesttag: +TAG=3_parc
'Marcus Garvey Park'
>>> parc_max_color(df.iloc[::7], 'Cinnamon') # doctesttag: +TAG=3_parc
'Chiqui Park'