Solució de l’examen de reavaluació d’Informàtica¶
- Organització:
Secció ETSEIB, Departament de Ciències de la Computació, UPC
- Data:
4 de juliol de 2023
- Durada:
2 hores minuts
- Copyright:
Reconeixement-CompartirIgual 4.0 No adaptada de Creative Commons
Jocs de proves
Iteradors: seleccio¶
>>> from seleccio import seleccio_valor
>>> it1 = iter(['pa', 'oli', 'vi', 'hola', 'hola', 'adeu', 'butxaca'])
>>> it2 = iter([0, 5, 1, 3])
>>> it3 = seleccio_valor(it1, it2)
>>> next(it3), next(it3), next(it3) # doctesttag: +TAG=1_seleccio
('p', 'i', 'a')
>>> it1 = iter(['pollastre', 'patates', 'enciam', 'hola', 'hola', 'adeu', 'butxaca', 'amor', 'pare'])
>>> it2 = iter([5, 5, 3, 6, 5, 0, 10, 20]) # doctesttag: +TAG=1_seleccio
>>> list(seleccio_valor(it1, it2))
['s', 'e', 'i', 'a']
>>> it1 = iter(['croissant', 'pessic', 'vinagre', 'bon', 'dia', 'ningú', 'ho', 'ha', 'demanat', 'però', 'us', 'dic', 'bon', 'dia'])
>>> it2 = iter([0, 1, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4])
>>> list(seleccio_valor(it1, it2)) # doctesttag: +TAG=1_seleccio
['c', 'e', 'g', 'b', 'i', 'n', 'd', 'e', 'd']
>>> it1 = iter(['croissant', 'pessic', 'vinagre'])
>>> it2 = iter([100, 200, 300])
>>> list(seleccio_valor(it1, it2)) # doctesttag: +TAG=1_seleccio
[]
>>> it1 = iter(['croissant', 'pessic', 'vinagre'])
>>> it2 = iter([3, 200, 1])
>>> list(seleccio_valor(it1, it2)) # doctesttag: +TAG=1_seleccio
['i', 'i']
Classes: autonoms¶
>>> from autonoms import Autonom
>>> b1 = Autonom('SA43', 8.0)
>>> b1.id, b1.vel # doctesttag: +TAG=2_autonoms
('SA43', 8.0)
>>> str(b1) # doctesttag: +TAG=2_autonoms
'Vehicle SA43'
>>> b1.durada(69.9) # doctesttag: +TAG=2_autonoms
datetime.timedelta(seconds=31455)
>>> b1.durada(245.2) # doctesttag: +TAG=2_autonoms
datetime.timedelta(days=1, seconds=23940)
>>> b2 = Autonom('XM68', 5.5)
>>> str(b2) # doctesttag: +TAG=2_autonoms
'Vehicle XM68'
>>> b2.id, b2.vel # doctesttag: +TAG=2_autonoms
('XM68', 5.5)
>>> b2.durada(878.5) # doctesttag: +TAG=2_autonoms
datetime.timedelta(days=6, seconds=56618, microseconds=181818)
>>> b3 = Autonom('HH22', 30)
>>> b3.id, b3.vel # doctesttag: +TAG=2_autonoms
('HH22', 30)
>>> str(b3) # doctesttag: +TAG=2_autonoms
'Vehicle HH22'
>>> b3.durada(100) # doctesttag: +TAG=2_autonoms
datetime.timedelta(seconds=12000)
Classes: flota¶
>>> from datetime import datetime
>>> from vehicles import Flota
>>> from autonoms import Autonom
>>> m = Flota('Eltour')
>>> m.afeg_vehicle(Autonom('B05', 9.5))
>>> m.afeg_vehicle(Autonom('T73', 18.1))
>>> len(m) # doctesttag: +TAG=2_flota
2
>>> m[0].id, m[0].vel # doctesttag: +TAG=2_flota
('B05', 9.5)
>>> m.afeg_vehicle(Autonom('AD56', 8.2))
>>> len(m) # doctesttag: +TAG=2_flota
3
>>> m[2].id, m[2].vel # doctesttag: +TAG=2_flota
('AD56', 8.2)
>>> m.afeg_vehicle(Autonom('AD56', 7.9))
>>> m[2].id, m[2].vel # doctesttag: +TAG=2_flota
('AD56', 7.9)
>>> len(m) # doctesttag: +TAG=2_flota
3
>>> m.afeg_vehicle(Autonom('TT34', 2.9))
>>> len(m) # doctesttag: +TAG=2_flota
4
>>> m[3].vel # doctesttag: +TAG=2_flota
2.9
>>> m.afeg_vehicle(Autonom('JT56', 0))
>>> len(m) # doctesttag: +TAG=2_flota
5
>>> m[4].vel # doctesttag: +TAG=2_flota
0
>>> m.afeg_vehicle(Autonom('JT56', 15))
>>> len(m) # doctesttag: +TAG=2_flota
5
>>> m[4].vel # doctesttag: +TAG=2_flota
15
Classes: AutonomsTop¶
>>> from autonomstop import AutonomTop
>>> b1 = AutonomTop('MN67', 30, 100, 3)
>>> b1.id, b1.vel, b1.tmax, b1.trepos # doctesttag: +TAG=2_autonomstop
('MN67', 30, 100, 3)
>>> b1.durada(100) # doctesttag: +TAG=2_autonomstop
datetime.timedelta(seconds=12000)
>>> b2 = AutonomTop('HR45', 22, 3, 4)
>>> b2.id, b2.vel, b2.tmax, b2.trepos # doctesttag: +TAG=2_autonomstop
('HR45', 22, 3, 4)
>>> b2.durada(100) # doctesttag: +TAG=2_autonomstop
datetime.timedelta(seconds=30763, microseconds=636364)
>>> b2.durada(2111) # doctesttag: +TAG=2_autonomstop
datetime.timedelta(days=9, seconds=14236, microseconds=363636)
>>> b2.durada(101) # doctesttag: +TAG=2_autonomstop
datetime.timedelta(seconds=30927, microseconds=272727)
>>> b2.durada(111) # doctesttag: +TAG=2_autonomstop
datetime.timedelta(seconds=32563, microseconds=636364)
>>> b3 = AutonomTop('JW12', 15, 2, 1)
>>> b3.id, b3.vel, b3.tmax, b3.trepos # doctesttag: +TAG=2_autonomstop
('JW12', 15, 2, 1)
>>> b3.durada(100) # doctesttag: +TAG=2_autonomstop
datetime.timedelta(seconds=34800)
>>> b3.durada(2111) # doctesttag: +TAG=2_autonomstop
datetime.timedelta(days=8, seconds=67440)
>>> b3.durada(2000) # doctesttag: +TAG=2_autonomstop
datetime.timedelta(days=8, seconds=26400)
>>> b3.durada(111) # doctesttag: +TAG=2_autonomstop
datetime.timedelta(seconds=37440)
Grafs¶
Els exemples que compten per la nota són només els que van seguits de
# doctesttag: +TAG
>>> import networkx as nx
>>> def crea_xarxa_metro(n=10):
... g = nx.Graph()
... linies = [
... ['AA', 'a1', '12', 'a2', 'a3', '14', 'a4'] ,
... ['BB', 'b1', '12', 'b2', 'b3', 'b4', '14', 'b5'] ,
... ['CC', 'c1', '14', 'c2', '12', 'c3'] ,
... ['DD', 'd1', 'a2', '12', 'd2', 'd3', 'd4'] ,
... ['L1', '10', '11', '12', '13', '14', '15'] ,
... ['L2', '20', '11', '22', '23', '24', '26', '27', '14', '28'] ,
... ['L3', '30', '11', '32', '33', '13', '35', '36', '37'] ,
... ['L4', '40', '11', '44', '45', '46', '13', '48'] ,
... ['L5', '50', '14', '51', '52', '53', '54', '55', '56', '11', '57', '58'] ,
... ['XX', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6'] ,
... ]
... for lin in linies[:n]:
... nx.add_path(g, lin[1:], linia=lin[0])
... return g
>>> from mes_metro import trajecte_alternatiu
>>> g = crea_xarxa_metro()
>>> trajecte_alternatiu(g, 'a2', 'a3') # doctesttag: +TAG=3_trajecte_alternatiu
['a2', '12', 'c2', '14', 'a3']
>>> g = crea_xarxa_metro()
>>> trajecte_alternatiu(g, '14', 'a4') # doctesttag: +TAG=3_trajecte_alternatiu
[]
>>> g = crea_xarxa_metro()
>>> trajecte_alternatiu(g, 'b2', '12') # doctesttag: +TAG=3_trajecte_alternatiu
['b2', 'b3', 'b4', '14', 'c2', '12']
>>> g = crea_xarxa_metro()
>>> trajecte_alternatiu(g, 'c2', '12') # doctesttag: +TAG=3_trajecte_alternatiu
['c2', '14', '13', '12']
>>> g = crea_xarxa_metro()
>>> trajecte_alternatiu(g, 'a2', '12') # doctesttag: +TAG=3_trajecte_alternatiu
['a2', 'a3', '14', 'c2', '12']
>>> trajecte_alternatiu(g, '12', '11') # doctesttag: +TAG=3_trajecte_alternatiu
['12', '13', '33', '32', '11']
>>> trajecte_alternatiu(g, '27', '14') # doctesttag: +TAG=3_trajecte_alternatiu
['27', '26', '24', '23', '22', '11', '12', 'c2', '14']
>>> trajecte_alternatiu(g, '33', '13') # doctesttag: +TAG=3_trajecte_alternatiu
['33', '32', '11', '12', '13']
>>> trajecte_alternatiu(g, '52', '51') # doctesttag: +TAG=3_trajecte_alternatiu
['52', '53', '54', '55', '56', '11', '12', 'c2', '14', '51']
>>> trajecte_alternatiu(g, '14', '51') # doctesttag: +TAG=3_trajecte_alternatiu
['14', 'c2', '12', '11', '56', '55', '54', '53', '52', '51']
Recursivitat: verificacio¶
>>> import datetime
>>> from date_checking import verificacio
>>> l = []
>>> verificacio(l) # doctesttag: +TAG=4_verificacio
(-1, -1)
>>> l = []
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 25)))
>>> verificacio(l) # doctesttag: +TAG=4_verificacio
(-1, -1)
>>> l = []
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 25)))
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 20)))
>>> verificacio(l) # doctesttag: +TAG=4_verificacio
(-1, -1)
>>> l = []
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 25)))
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 20)))
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 19)))
>>> verificacio(l) # doctesttag: +TAG=4_verificacio
(2, -1)
>>> l = []
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 25)))
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 20)))
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 19)))
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 15)))
>>> verificacio(l) # doctesttag: +TAG=4_verificacio
(2, -1)
>>> l = []
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 25)))
>>> l.append((datetime.date (2023, 1, 25), datetime.date (2023, 1, 30)))
>>> l.append((datetime.date (2023, 1, 20), datetime.date (2023, 1, 20)))
>>> l.append((datetime.date (2023, 1, 30), datetime.date (2023, 2, 1)))
>>> l.append((datetime.date (2023, 1, 30), datetime.date (2023, 2, 25)))
>>> verificacio(l) # doctesttag: +TAG=4_verificacio
(-1, -1)
Pandas: electro1¶
>>> import pandas as pd
>>> from electro import electro1
>>> df = pd.read_csv('consum_elect.csv', dtype = {'Codi_Postal': str})
>>> electro1(df, 'Residencial', '0-6') # doctesttag: +TAG=5_electro_1
('2022-02-18', '08008', 8934)
>>> electro1(df, 'Residencial', '6-12') # doctesttag: +TAG=5_electro_1
('2022-01-01', '08008', 10246)
>>> electro1(df, 'Residencial', '12-18') # doctesttag: +TAG=5_electro_1
('2022-01-01', '08008', 12108)
>>> electro1(df, 'Indústria', '0-6') # doctesttag: +TAG=5_electro_1
('2022-03-30', '08001', 659)
>>> electro1(df, 'Indústria', '6-12') # doctesttag: +TAG=5_electro_1
('2022-01-01', '08016', 842)
>>> electro1(df, 'Indústria', '18-24') # doctesttag: +TAG=5_electro_1
('2022-01-01', '08011', 930)
>>> electro1(df, 'Serveis', '0-6') # doctesttag: +TAG=5_electro_1
('2022-03-27', '08009', 13436)
>>> electro1(df, 'Serveis', '6-12') # doctesttag: +TAG=5_electro_1
('2022-01-01', '08012', 16644)
>>> electro1(df, 'Serveis', '12-18') # doctesttag: +TAG=5_electro_1
('2022-03-27', '08009', 19521)
>>> electro1(df, 'No especificat', '6-12') # doctesttag: +TAG=5_electro_1
('2022-03-20', '08015', 11)
>>> electro1(df, 'No especificat', '12-18') # doctesttag: +TAG=5_electro_1
('2022-03-13', '08015', 10)
>>> electro1(df, 'No especificat', '18-24') # doctesttag: +TAG=5_electro_1
('2022-03-06', '08015', 10)
Pandas: electro2¶
>>> from electro import electro2
>>> df = pd.read_csv('consum_elect.csv', dtype = {'Codi_Postal': str})
>>> se1 = electro2(df, 1)
>>> type(se1) # doctesttag: +TAG=5_electro_2
<class 'pandas.core.series.Series'>
>>> se1 = se1.apply(int).sort_values(ascending= False)
>>> se1 # doctesttag: +TAG=5_electro_2
Sector_Economic
Serveis 53
Residencial 41
Indústria 5
No especificat 0
Name: Valor, dtype: int64
>>> se2 = electro2(df, 2).sort_values(ascending= False)
>>> se2 = se2.apply(int)
>>> se2 # doctesttag: +TAG=5_electro_2
Sector_Economic
Serveis 55
Residencial 38
Indústria 5
No especificat 0
Name: Valor, dtype: int64
>>> df1 = df[df['Tram_Horari'] == '12-18']
>>> se3 = electro2(df1, 1)
>>> se3 = se3.apply(lambda x: round(x, 2))
>>> se3 # doctesttag: +TAG=5_electro_2
Sector_Economic
Serveis 54.99
Residencial 39.88
Indústria 5.04
No especificat 0.09
Name: Valor, dtype: float64
>>> se4 = electro2(df1, 2)
>>> se4 = se4.apply(lambda x: round(x, 2))
>>> se4 # doctesttag: +TAG=5_electro_2
Sector_Economic
Serveis 57.98
Residencial 36.54
Indústria 5.38
No especificat 0.10
Name: Valor, dtype: float64
>>> se5 = electro2(df1, 3)
>>> se5 = se5.apply(lambda x: round(x, 2))
>>> se5 # doctesttag: +TAG=5_electro_2
Sector_Economic
Serveis 58.31
Residencial 36.18
Indústria 5.40
No especificat 0.11
Name: Valor, dtype: float64