Solució de l’examen Final - Torn 1¶
- 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
Tests funció amigables¶
>>> 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(ares2)
>>> g2 = nx.Graph()
>>> g2.add_nodes_from(nodes)
>>> g2.add_edges_from(ares1 + ares2)
>>> from mes_amistats import amigables
>>> amigables(g1) # doctesttag: +TAG=1_amigables
{'Artur'}
>>> g1.add_edge('Clara', 'Sergi', any=2024)
>>> g1.add_edge('Clara', 'Daniel', any=2024)
>>> amigables(g1) == {'Artur', 'Clara'} # doctesttag: +TAG=1_amigables
True
>>> g1.add_edge('Daniel', 'Sergi', any=2025)
>>> amigables(g1) == {'Sergi', 'Daniel', 'Clara', 'Artur'} # doctesttag: +TAG=1_amigables
True
>>> g1.remove_edge('Sergi', 'Artur')
>>> amigables(g1) == {'Daniel', 'Clara'} # doctesttag: +TAG=1_amigables
True
>>> g1.remove_nodes_from(['Daniel', 'Clara', 'Artur'])
>>> amigables(g1) == {'Ton', 'Elena', 'Rut'} # doctesttag: +TAG=1_amigables
True
>>> amigables(g2) == {'Pep', 'Sergi', 'Fina', 'Clara'} # doctesttag: +TAG=1_amigables
True
>>> g2.remove_edge('Pep', 'Clara')
>>> amigables(g2) == {'Fina', 'Sergi'} # doctesttag: +TAG=1_amigables
True
>>> g2.add_edge('Anna', 'Fina', any=2025)
>>> amigables(g2) == {'Fina'} # doctesttag: +TAG=1_amigables
True
>>> g2.add_edge('Anna', 'Manel', any=2025)
>>> g2.add_edge('Anna', 'Clara', any=2025)
>>> amigables(g2) == {'Anna', 'Fina'} # doctesttag: +TAG=1_amigables
True
>>> amigables(nx.complete_graph(30)) == set(range(30)) # doctesttag: +TAG=1_amigables
True
Tests funció amistats_any¶
>>> g1 = nx.Graph()
>>> g1.add_nodes_from(nodes)
>>> g1.add_edges_from(ares2)
>>> g2 = nx.Graph()
>>> g2.add_nodes_from(nodes)
>>> g2.add_edges_from(ares1 + ares2)
>>> from mes_amistats import amistats_any
>>> amistats_any(g1, 2011) # doctesttag: +TAG=1_amistats_any-una
['Artur', 'Pere']
>>> amistats_any(g1, 2014) # doctesttag: +TAG=1_amistats_any-una
[]
>>> amistats_any(g1, 2012) # doctesttag: +TAG=1_amistats_any-mes_d_una
['Artur', 'Clara', 'Lola', 'Maria', 'Sergi']
>>> amistats_any(g2, 2010) # doctesttag: +TAG=1_amistats_any-una
['Daniel', 'Maria', 'Quim', 'Sergi']
>>> amistats_any(g2, 2011) # doctesttag: +TAG=1_amistats_any-mes_d_una
['Artur', 'Daniel', 'Fina', 'Pere', 'Sergi']
>>> amistats_any(g2, 2012) # doctesttag: +TAG=1_amistats_any-mes_d_una
['Artur', 'Clara', 'Jordi', 'Lola', 'Maria', 'Quim', 'Sergi']
>>> amistats_any(g2, 2013) # doctesttag: +TAG=1_amistats_any-una
['Lluís', 'Sofia']
>>> amistats_any(g2, 2014) # doctesttag: +TAG=1_amistats_any-una
['Fina', 'Lluís']
>>> amistats_any(g2, 2015) # doctesttag: +TAG=1_amistats_any-mes_d_una
['Anna', 'Clara', 'Daniel', 'Fina', 'Pep']
>>> amistats_any(g2, 2016) # doctesttag: +TAG=1_amistats_any-una
[]
>>> amistats_any(g2, 2017) # doctesttag: +TAG=1_amistats_any-una
['Olga', 'Sergi']
>>> amistats_any(g2, 2018) # doctesttag: +TAG=1_amistats_any-mes_d_una
['Jordi', 'Pep', 'Quim']
>>> amistats_any(g2, 2019) # doctesttag: +TAG=1_amistats_any-una
['Clara', 'Fina', 'Jordi', 'Sofia']
>>> amistats_any(g2, 2022) # doctesttag: +TAG=1_amistats_any-mes_d_una
['Anna', 'Elena', 'Maria', 'Rut', 'Ton']
Tests funció max_inc_i_dec¶
>>> from incdec import max_inc_i_dec
>>> max_inc_i_dec([88]) # doctesttag: +TAG=2_max_inc_i_dec
(0, 0)
>>> max_inc_i_dec([1, 9, 1, 10, 1, 1, 12]) # doctesttag: +TAG=2_max_inc_i_dec
(11, 9)
>>> max_inc_i_dec([6, -7]) # doctesttag: +TAG=2_max_inc_i_dec
(0, 13)
>>> max_inc_i_dec([19] * 50) # doctesttag: +TAG=2_max_inc_i_dec
(0, 0)
>>> max_inc_i_dec([i**3 for i in range(-10, 10)]) # doctesttag: +TAG=2_max_inc_i_dec
(271, 0)
>>> max_inc_i_dec([i + i**2 for i in range(-100, 100, 8)]) # doctesttag: +TAG=2_max_inc_i_dec
(1416, 1528)
>>> max_inc_i_dec([i - i**2 for i in range(-70, 70, 2)]) # doctesttag: +TAG=2_max_inc_i_dec
(278, 266)
>>> max_inc_i_dec([i**3 for i in range(-100, 100, 2)]) # doctesttag: +TAG=2_max_inc_i_dec
(58808, 0)
>>> max_inc_i_dec([-i**3 for i in range(-200, 200, 3)]) # doctesttag: +TAG=2_max_inc_i_dec
(0, 354627)
>>> max_inc_i_dec([-i**2 + 20*i + 11 for i in range(-1000, 1000, 7)]) # doctesttag: +TAG=2_max_inc_i_dec
(14091, 13741)
Tests funció recompte_mensual¶
>>> import pandas as pd
>>> df = pd.read_csv("esquirols2.csv")
>>> from esquirols import recompte_mensual
>>> recompte_mensual(df, 'Fort Tryon Park', 2, 4) # doctesttag: +TAG=3_recompte_mensual
2
>>> recompte_mensual(df, 'Columbus Park', 10, 10) # doctesttag: +TAG=3_recompte_mensual
1
>>> recompte_mensual(df, 'McCarren Park', 3, 8) # doctesttag: +TAG=3_recompte_mensual
18
>>> recompte_mensual(df, 'McCarren Park', 0, 0) # doctesttag: +TAG=3_recompte_mensual
5
>>> recompte_mensual(df, 'Columbus Park', 0, 10) # doctesttag: +TAG=3_recompte_mensual
0
>>> recompte_mensual(df, 'J. Hood Wright Park', 2, 11) # doctesttag: +TAG=3_recompte_mensual
16
>>> recompte_mensual(df, 'Highbridge Park', 5, 12) # doctesttag: +TAG=3_recompte_mensual
4
>>> recompte_mensual(df, 'Chiqui Park', 1, 12) # doctesttag: +TAG=3_recompte_mensual
86
>>> for m in range(1, 12): # doctesttag: +TAG=3_recompte_mensual
... print(recompte_mensual(df, 'Highbridge Park', 1, m), end='-')
0-3-3-6-6-7-7-9-9-9-9-
>>> for m in range(1, 12): # doctesttag: +TAG=3_recompte_mensual
... print(recompte_mensual(df, 'Chiqui Park', m, 12), end='-')
86-86-66-66-52-52-35-35-14-14-6-
Tests funció reflex_rar¶
>>> import pandas as pd
>>> df = pd.read_csv("esquirols2.csv")
>>> from esquirols import reflex_rar
>>> reflex_rar(df, 'CENTRAL MANHATTAN') # doctesttag: +TAG=3_reflex_rar
'Silver'
>>> reflex_rar(df, 'BROOKLYN') # doctesttag: +TAG=3_reflex_rar
'Yellow'
>>> reflex_rar(df, 'UPPER MANHATTAN') # doctesttag: +TAG=3_reflex_rar
'Green'
>>> reflex_rar(df, 'LOWER MANHATTAN') # doctesttag: +TAG=3_reflex_rar
'Orange'
>>> reflex_rar(df.iloc[10:], 'BROOKLYN') # doctesttag: +TAG=3_reflex_rar
'Yellow'
>>> reflex_rar(df, 'CHINATOWN') # doctesttag: +TAG=3_reflex_rar
'White'
>>> reflex_rar(df.iloc[::3], 'UPPER MANHATTAN') # doctesttag: +TAG=3_reflex_rar
'Gray'
>>> reflex_rar(df.iloc[1::3], 'UPPER MANHATTAN') # doctesttag: +TAG=3_reflex_rar
'Blue'
>>> reflex_rar(df.iloc[1::2], 'CENTRAL MANHATTAN') # doctesttag: +TAG=3_reflex_rar
'Silver'
>>> reflex_rar(df.iloc[::3], 'CENTRAL MANHATTAN') # doctesttag: +TAG=3_reflex_rar
'Silver'