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

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'