Solució del l’Examen de Reavaluació d’Ampliació d’Informàtica

Organització:

Secció ETSEIB, Departament de Ciències de la Computació, UPC

Data:

1 de juliol de 2026

Copyright:

Reconeixement-CompartirIgual 3.0 No adaptada de Creative Commons

Jocs de proves. Utilitzen fitxers auxiliars restaurant-test1.csv, restaurant-test2.csv.

Els exemples que compten per la nota són només els que van seguits de # doctesttag: +TAG=

Doctests EquipsONG

>>> from ong import EquipsONG
>>> e = EquipsONG()
>>> e.projectes  # doctesttag: +TAG=1_EquipsONG
{}
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
0
>>> e['X']  # doctesttag: +TAG=1_EquipsONG
[]
>>> e.assigna('P1', 'Alice')
>>> e.projectes.keys() == {'P1'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.projectes['P1'] == {'Alice'}  # doctesttag: +TAG=1_EquipsONG
True
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
1
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
['Alice']
>>> e.assigna('P1', 'Bob')
>>> e.projectes['P1'] == {'Alice', 'Bob'}  # doctesttag: +TAG=1_EquipsONG
True
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
1
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
['Alice', 'Bob']
>>> e.assigna('P2', 'Alice')
>>> e['P2']  # doctesttag: +TAG=1_EquipsONG
[]
>>> e.desassigna('P1', 'Bob')
>>> e.projectes.keys() == {'P1'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.projectes['P1'] == {'Alice'}  # doctesttag: +TAG=1_EquipsONG
True
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
1
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
['Alice']
>>> e.desassigna('P2', 'Alice')
>>> e.projectes.keys() == {'P1'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.projectes['P1'] == {'Alice'}  # doctesttag: +TAG=1_EquipsONG
True
>>> len(e)
1
>>> e.desassigna('P1', 'NoExisteix')
>>> e.projectes.keys() == {'P1'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.projectes['P1'] == {'Alice'}  # doctesttag: +TAG=1_EquipsONG
True
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
1
>>> e.desassigna('P1', 'Alice')
>>> e.projectes  # doctesttag: +TAG=1_EquipsONG
{}
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
0
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
[]
>>> e.assigna('P3', 'Clara')
>>> e.assigna('P3', 'David')
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
1
>>> e.projectes.keys() == {'P3'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.projectes['P3'] == {'Clara', 'David'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.esborra_projecte('P3')
>>> e.projectes  # doctesttag: +TAG=1_EquipsONG
{}
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
0
>>> e['P3']  # doctesttag: +TAG=1_EquipsONG
[]
>>> e.assigna('P4', 'Eva')
>>> e.projectes.keys() == {'P4'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.projectes['P4'] == {'Eva'}  # doctesttag: +TAG=1_EquipsONG
True
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
1
>>> e.esborra_projecte('PNoActiu')
>>> e.projectes.keys() == {'P4'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.projectes['P4'] == {'Eva'}  # doctesttag: +TAG=1_EquipsONG
True
>>> len(e)
1
>>> e = EquipsONG()
>>> e.assigna('PB', 'Ben')
>>> e.assigna('PA', 'Ann')
>>> e.assigna('PA', 'Cara')
>>> e.conjunt_persones() == {'Ann', 'Ben', 'Cara'}  # doctesttag: +TAG=1_EquipsONG
True
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
2
>>> e = EquipsONG()
>>> e.assigna('P', 'Zoe')
>>> e.assigna('P', 'Ana')
>>> e.assigna('P', 'Marta')
>>> e['P']  # doctesttag: +TAG=1_EquipsONG
['Ana', 'Marta', 'Zoe']
>>> e = EquipsONG()
>>> e.assigna('P1', 'Lia')
>>> e.assigna('P1', 'Lia')
>>> e.projectes['P1'] == {'Lia'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
['Lia']
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
1
>>> e = EquipsONG()
>>> e.assigna('P1', 'A')
>>> e.assigna('P1', 'B')
>>> e.assigna('P2', 'C')
>>> (len(e), e['P1'], e['P2'])  # doctesttag: +TAG=1_EquipsONG
(2, ['A', 'B'], ['C'])
>>> e.desassigna('P1', 'A')
>>> (len(e), e['P1'], e['P2'], e.conjunt_persones() == {'B','C'})  # doctesttag: +TAG=1_EquipsONG
(2, ['B'], ['C'], True)
>>> e.esborra_projecte('P2')
>>> (len(e), e['P2'], e.conjunt_persones() == {'B'})  # doctesttag: +TAG=1_EquipsONG
(1, [], True)
>>> e = EquipsONG()
>>> e.assigna('P1','A'); e.assigna('P1','B'); e.assigna('P1','C')
>>> e.assigna('P2','D'); e.assigna('P2','E'); e.assigna('P2','F'); e.assigna('P2','G')
>>> e.assigna('P3','H'); e.assigna('P3','I')
>>> e.assigna('P4','J')
>>> e.assigna('P5','K'); e.assigna('P5','L')
>>> # Tots els projectes estan actius: 5 projectes actius
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
5
>>> e.projectes.keys() == {'P1','P2','P3','P4','P5'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e['P1'], e['P2'], e['P3'], e['P4'], e['P5']  # doctesttag: +TAG=1_EquipsONG
(['A', 'B', 'C'], ['D', 'E', 'F', 'G'], ['H', 'I'], ['J'], ['K', 'L'])
>>> e.conjunt_persones() == {'A','B','C','D','E','F','G','H','I','J','K','L'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.desassigna('P2','D')
>>> e.desassigna('P2','G')
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
5
>>> e['P2']  # doctesttag: +TAG=1_EquipsONG
['E', 'F']
>>> e.conjunt_persones() == {'A','B','C','E','F','H','I','J','K','L'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e.desassigna('P2','E')
>>> e.desassigna('P2','F')
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
4
>>> e.projectes.keys() == {'P1','P3','P4','P5'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e['P2']  # doctesttag: +TAG=1_EquipsONG
[]
>>> e.esborra_projecte('P1')
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
3
>>> e.projectes.keys() == {'P3','P4','P5'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
[]
>>> e.conjunt_persones() == {'H','I','J','K','L'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e = EquipsONG()
>>> e.assigna('P1','A')
>>> e.assigna('P2','B')
>>> e.assigna('P2','A')
>>> e.projectes.keys() == {'P1','P2'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
['A']
>>> e['P2']  # doctesttag: +TAG=1_EquipsONG
['B']
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
2
>>> e.conjunt_persones() == {'A','B'}  # doctesttag: +TAG=1_EquipsONG
True
>>> e = EquipsONG()
>>> e.assigna('P1','A')
>>> e.esborra_projecte('P1')
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
0
>>> e.desassigna('P1','A')
>>> len(e)  # doctesttag: +TAG=1_EquipsONG
0
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
[]
>>> e = EquipsONG()
>>> e.assigna('P1','C')
>>> e.assigna('P1','A')
>>> e.assigna('P1','B')
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
['A', 'B', 'C']
>>> e.desassigna('P1','B')
>>> e['P1']  # doctesttag: +TAG=1_EquipsONG
['A', 'C']

Doctests per a estats_segons_canvi

>>> import networkx as nx
>>> import npc
>>> g = nx.DiGraph()
>>> npc.estats_segons_canvi(g, "qualsevol")  # doctesttag: +TAG=2_canvi
([], [])
>>> g = nx.DiGraph()
>>> g.add_edge("A", "B", canvi="x")
>>> npc.estats_segons_canvi(g, "x")  # doctesttag: +TAG=2_canvi
(['A'], ['B'])
>>> g = nx.DiGraph()
>>> g.add_edge("A", "B", canvi="x")
>>> g.add_edge("C", "D", canvi="x")
>>> npc.estats_segons_canvi(g, "x")  # doctesttag: +TAG=2_canvi
(['A', 'C'], ['B', 'D'])
>>> g = nx.DiGraph()
>>> g.add_edge("A", "B", canvi="x")
>>> g.add_edge("A", "C", canvi="x")
>>> npc.estats_segons_canvi(g, "x")  # doctesttag: +TAG=2_canvi
(['A'], ['B', 'C'])
>>> g = nx.DiGraph()
>>> g.add_edge("A", "B", canvi="x")
>>> g.add_edge("C", "B", canvi="x")
>>> npc.estats_segons_canvi(g, "x")  # doctesttag: +TAG=2_canvi
(['A', 'C'], ['B'])
>>> g = nx.DiGraph()
>>> g.add_edge("A", "B", canvi="x")
>>> g.add_edge("A", "C", canvi="x")
>>> g.add_edge("D", "B", canvi="x")
>>> npc.estats_segons_canvi(g, "x")  # doctesttag: +TAG=2_canvi
(['A', 'D'], ['B', 'C'])
>>> g = nx.DiGraph()
>>> g.add_edge("A", "B", canvi="x")
>>> g.add_edge("B", "A", canvi="altre")
>>> npc.estats_segons_canvi(g, "x")  # doctesttag: +TAG=2_canvi
(['A'], ['B'])
>>> npc.estats_segons_canvi(g, "altre")  # doctesttag: +TAG=2_canvi
(['B'], ['A'])
>>> g = nx.DiGraph()
>>> g.add_edge("A", "B", canvi="x")
>>> g.add_edge("B", "C", canvi="y")
>>> npc.estats_segons_canvi(g, "z")  # doctesttag: +TAG=2_canvi
([], [])
>>> import networkx as nx
>>> g = nx.DiGraph()
>>> g.add_edge("A", "B", canvi="c1")
>>> g.add_edge("A", "C", canvi="c2")
>>> g.add_edge("D", "B", canvi="c1")
>>> npc.estats_segons_canvi(g, "c2")  # doctesttag: +TAG=2_canvi
(['A'], ['C'])
>>> npc.estats_segons_canvi(g, "c1")  # doctesttag: +TAG=2_canvi
(['A', 'D'], ['B'])
>>> g = nx.DiGraph()
>>> g.add_edge("B", "Z", canvi="x")
>>> g.add_edge("A", "Y", canvi="x")
>>> npc.estats_segons_canvi(g, "x")  # doctesttag: +TAG=2_canvi
(['A', 'B'], ['Y', 'Z'])
>>> import networkx as nx
>>> g = nx.DiGraph()
>>> g.add_edge("estat1", "estat2", canvi="x")
>>> npc.estats_segons_canvi(g, "x")  # doctesttag: +TAG=2_canvi
(['estat1'], ['estat2'])
>>> import networkx as nx
>>> g = nx.DiGraph()
>>> g.add_edge("c", "e", canvi="full")
>>> g.add_edge("a", "b", canvi="full")
>>> g.add_edge("a", "d", canvi="full")
>>> g.add_edge("c", "b", canvi="full")
>>> g.add_edge("b", "c", canvi="treball")
>>> g.add_edge("d", "e", canvi="treball")
>>> npc.estats_segons_canvi(g, "full")  # doctesttag: +TAG=2_canvi
(['a', 'c'], ['b', 'd', 'e'])
>>> npc.estats_segons_canvi(g, "treball")  # doctesttag: +TAG=2_canvi
(['b', 'd'], ['c', 'e'])
>>> import networkx as nx
>>> g = nx.DiGraph()
>>> g.add_edge("A", "B", canvi="w")
>>> g.add_edge("B", "C", canvi="x")
>>> npc.estats_segons_canvi(g, "x")  # doctesttag: +TAG=2_canvi
(['B'], ['C'])
>>> npc.estats_segons_canvi(g, "qualsevol")  # doctesttag: +TAG=2_canvi
([], [])

Doctests per a camins_de_retorn

>>> g = nx.DiGraph()
>>> nx.add_path(g, "ABCDEFG", canvi="m")
>>> npc.camins_de_retorn(g, "A")  # doctesttag: +TAG=2_retorn
[]
>>> g = nx.DiGraph()
>>> g.add_edge("A","B", canvi="x")
>>> g.add_edge("B","A", canvi="x")
>>> cicles = npc.camins_de_retorn(g, "A")
>>> sorted(cicles)  # doctesttag: +TAG=2_retorn
[['A', 'B', 'A']]
>>> g = nx.DiGraph()
>>> g.add_edge("A","B", canvi="x")
>>> g.add_edge("B","C", canvi="x")
>>> g.add_edge("C","A", canvi="x")
>>> nx.add_path(g, "ADEFG", canvi="m")
>>> cicles = npc.camins_de_retorn(g, "A")
>>> sorted(cicles)  # doctesttag: +TAG=2_retorn
[['A', 'B', 'C', 'A']]
>>> g = nx.DiGraph()
>>> g.add_edge("A","B", canvi="x")
>>> g.add_edge("B","A", canvi="x")
>>> g.add_edge("A","C", canvi="x")
>>> g.add_edge("C","A", canvi="x")
>>> cicles = npc.camins_de_retorn(g, "A")
>>> sorted(cicles)  # doctesttag: +TAG=2_retorn
[['A', 'B', 'A'], ['A', 'C', 'A']]
>>> g = nx.DiGraph()
>>> g.add_edge("A","B", canvi="x")
>>> g.add_edge("B","C", canvi="x")
>>> g.add_edge("C","D", canvi="x")
>>> g.add_edge("D","A", canvi="x")
>>> g.add_edge("B","A", canvi="x")
>>> cicles = npc.camins_de_retorn(g, "A")
>>> esperats = {("A","B","A"), ("A","B","C","A")}
>>> sorted(cicles)  # doctesttag: +TAG=2_retorn
[['A', 'B', 'A'], ['A', 'B', 'C', 'D', 'A']]
>>> g = nx.DiGraph()
>>> g.add_edge("A","B", canvi="x")
>>> g.add_edge("B","A", canvi="x")  # A-B-A
>>> g.add_edge("A","C", canvi="x")
>>> g.add_edge("C","D", canvi="x")
>>> g.add_edge("D","A", canvi="x")  # A-C-D-A
>>> g.add_edge("B","C", canvi="x")  # A-B-C-D-A
>>> cicles = npc.camins_de_retorn(g, "A")
>>> sorted(cicles)  # doctesttag: +TAG=2_retorn
[['A', 'B', 'A'], ['A', 'B', 'C', 'D', 'A'], ['A', 'C', 'D', 'A']]
>>> g = nx.DiGraph()
>>> g.add_edge("A","B", canvi="x")
>>> g.add_edge("A","C", canvi="x")
>>> g.add_edge("B","D", canvi="x")
>>> g.add_edge("C","D", canvi="x")
>>> g.add_edge("D","A", canvi="x")
>>> g.add_edge("B","C", canvi="x")
>>> cicles = npc.camins_de_retorn(g, "A")
>>> sorted(cicles)  # doctesttag: +TAG=2_retorn
[['A', 'B', 'C', 'D', 'A'], ['A', 'B', 'D', 'A'], ['A', 'C', 'D', 'A']]
>>> g = nx.DiGraph()
>>> g.add_edge("A","B", canvi="x")
>>> g.add_edge("B","A", canvi="x")  # A-B-A
>>> g.add_edge("B","C", canvi="p")
>>> g.add_edge("C","A", canvi="x")  # A-B-C-A
>>> g.add_edge("A","D", canvi="p")
>>> g.add_edge("D","A", canvi="x")  # A-D-A
>>> cicles = npc.camins_de_retorn(g, "A")
>>> sorted(cicles)  # doctesttag: +TAG=2_retorn
[['A', 'B', 'A'], ['A', 'B', 'C', 'A'], ['A', 'D', 'A']]
>>> g.add_edge("D","E", canvi="n")
>>> g.add_edge("E","D", canvi="x")
>>> g.add_edge("A","E", canvi="n")
>>> g.add_edge("E","A", canvi="x")
>>> cicles = npc.camins_de_retorn(g, "A")
>>> sorted(cicles)  # doctesttag: +TAG=2_retorn
[['A', 'B', 'A'], ['A', 'B', 'C', 'A'], ['A', 'D', 'A'], ['A', 'D', 'E', 'A'], ['A', 'E', 'A'], ['A', 'E', 'D', 'A']]
>>> cicles = npc.camins_de_retorn(g, "B")
>>> sorted(cicles)  # doctesttag: +TAG=2_retorn
[['B', 'A', 'B'], ['B', 'C', 'A', 'B']]

Doctests per a mesos_sense_compra

>>> import pandas as pd
>>> import restaurant
>>> df = pd.read_csv("restaurant-test1.csv")
>>> lm = restaurant.mesos_sense_compra(df, "NoExisteix")
>>> lm  # doctesttag: +TAG=3_mesos
['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre']
>>> lm = restaurant.mesos_sense_compra(df, "Vinagre de Xerès")
>>> lm  # doctesttag: +TAG=3_mesos
['gener', 'febrer', 'març', 'maig', 'juliol', 'agost', 'octubre', 'novembre']
>>> lm = restaurant.mesos_sense_compra(df, "Mató")
>>> lm  # doctesttag: +TAG=3_mesos
['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'setembre', 'octubre', 'desembre']
>>> lm = restaurant.mesos_sense_compra(df, "Costella de porc")
>>> lm  # doctesttag: +TAG=3_mesos
['gener', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'novembre', 'desembre']
>>> lm = restaurant.mesos_sense_compra(df, "Pebre negre")
>>> lm  # doctesttag: +TAG=3_mesos
['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'setembre', 'desembre']
>>> df = pd.read_csv("restaurant-test2.csv")
>>> lm = restaurant.mesos_sense_compra(df, "NoExisteix")
>>> lm  # doctesttag: +TAG=3_mesos
['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre']
>>> lm = restaurant.mesos_sense_compra(df, "Vinagre de Xerès")
>>> lm  # doctesttag: +TAG=3_mesos
['maig', 'desembre']
>>> lm = restaurant.mesos_sense_compra(df, "Mató")
>>> lm  # doctesttag: +TAG=3_mesos
['gener', 'abril', 'agost', 'setembre']
>>> lm = restaurant.mesos_sense_compra(df, "Costella de porc")
>>> lm  # doctesttag: +TAG=3_mesos
['gener', 'agost']
>>> lm = restaurant.mesos_sense_compra(df, "Pebre negre")
>>> lm  # doctesttag: +TAG=3_mesos
['juny', 'juliol', 'octubre', 'novembre']

Doctests per a millors_preus

>>> df = pd.read_csv("restaurant-test1.csv")
>>> dp = restaurant.millors_preus(df, 'Condiments')
>>> sorted(map(lambda t:(t[0], int(t[1])), dp.items()))  # doctesttag: +TAG=3_preus
[('Mostassa', 21), ("Oli d'oliva", 28), ('Pebre negre', 1), ('Sucre de canya', 2), ('Vinagre de Xerès', 19)]
>>> dp = restaurant.millors_preus(df, 'Carns')
>>> sorted(map(lambda t:(t[0], int(t[1])), dp.items()))  # doctesttag: +TAG=3_preus
[('Botifarra', 14), ('Conill', 12), ('Costella de porc', 6), ('Cuixa de pollastre', 3), ('Menuts', 14), ('Pit de pollastre', 10), ('Vedella tallada', 13)]
>>> dp = restaurant.millors_preus(df, 'Pedres')
>>> sorted(dp.items())  # doctesttag: +TAG=3_preus
[]
>>> dp = restaurant.millors_preus(df, 'Productes lactis')
>>> sorted(map(lambda t:(t[0], int(t[1])), dp.items()))  # doctesttag: +TAG=3_preus
[('Emmental', 3), ('Formatge blau', 20), ('Formatge fresc', 22), ('Formatge parmesà', 5), ('Iogurts', 19), ('Mató', 3)]
>>> dp = restaurant.millors_preus(df, 'Peix')
>>> sorted(map(lambda t:(t[0], int(t[1])), dp.items()))  # doctesttag: +TAG=3_preus
[('Bacallà dessalat', 7), ('Gamba', 15), ('LLuç filets', 14), ('Rap', 12), ('Salmó', 12), ('Sardina fresca', 5), ('Tonyina en llauna', 4)]
>>> df = pd.read_csv("restaurant-test2.csv")
>>> dp = restaurant.millors_preus(df, 'Condiments')
>>> sorted(dp.items())  # doctesttag: +TAG=3_preus
[('Herbes provençals', 2), ('Mostassa', 0), ("Oli d'oliva", 0), ('Pebre negre', 4), ('Sal', 0), ('Salsa de soja', 2), ('Sucre de canya', 4), ('Vinagre de Xerès', 2)]
>>> dp = restaurant.millors_preus(df, 'Verdures')
>>> sorted(dp.items())  # doctesttag: +TAG=3_preus
[('All tendre', 0), ('Carbassó', 1), ('Ceba', 0), ('Enciam romà', 0), ('Espinacs', 0), ('Mongeta verda', 0), ('Pastanaga', 0), ('Patata', 0), ('Tomàquet', 0)]
>>> dp = restaurant.millors_preus(df, 'Peix')
>>> sorted(dp.items())  # doctesttag: +TAG=3_preus
[('Bacallà dessalat', 5), ('Calamar', 4), ('Gamba', 7), ('LLuç filets', 4), ('Rap', 6), ('Salmó', 4), ('Sardina fresca', 5), ('Tonyina en llauna', 6)]
>>> dp = restaurant.millors_preus(df, 'Begudes')
>>> sorted(dp.items())  # doctesttag: +TAG=3_preus
[('Aigua 1.5L', 4), ('Cava', 1), ('Cervesa 33cl', 0), ('Gasosa', 0), ('Refresc llauna', 0), ('Sucs 1L', 0), ('Vermouth', 0), ('Vins (ampolla)', 1)]
>>> dp = restaurant.millors_preus(df, 'Carns')
>>> sorted(dp.items())  # doctesttag: +TAG=3_preus
[('Botifarra', 4), ('Conill', 4), ('Costella de porc', 3), ('Cuixa de pollastre', 3), ("Gall d'indi", 4), ('Menuts', 4), ('Pit de pollastre', 3), ('Vedella tallada', 3)]