Castellers de la colla Moments Estàtics

La colla de castellers Moments estàtics té les dades dels seus castellers en un fitxer de posicions. Al fitxer de posicions hi ha una línia per cada casteller on hi ha el nom i una sèrie de posicions que pot ocupar el casteller. Per exemple, la línia:

Guifré dosos tresos pinya

indica que el casteller Guifré pot ocupar les posicions de dosos, tresos o pinya. El fitxer colla.txt n’és un exemple. Pots veure’n les primeres línies a continuació:

Victoria enxanetes
Aureli tresos pinya
Joan cincs
Pepet dosos pinya
Fergana acotxadors

L’objectiu és dissenyar la funció lacolla() que rep el nom d’un fitxer com el descrit i retorna un diccionari de posicions. Cadascuna de les claus d’un diccionari de posicions és el nom d’una posició i el valor corresponent és la llista dels castellers que poden ocupar aquella posició, ordenada alfabèticament. Si per alguna posició no hi ha cap casteller aquesta posició no ha d’apareixer al diccionari.

Però abans, dissenya les funcions següents i desa-les al fitxer castellers.py.

castellers.actualitza_dic_posicions(dp, nom, posicions)

dp és un diccionari de posicions.

nom (str) és el nom d’un casteller.

posicions és una llista de posicions (str)

La funció modica dp afegint el casteller nom a cada una de les posicions de la llista posicions.

Per exemple:


>>> d = {}
>>> actualitza_dic_posicions(d, 'Jair', ['uns', 'pinya'])
>>> if d != {
... 'uns': ['Jair'],
... 'pinya': ['Jair'],
... }: print(d)

>>> d = {'uns': ['Jair'], 'pinya': ['Jair']}
>>> actualitza_dic_posicions(d, 'Aureli', ['pinya', 'tresos', 'quatres'])
>>> if d != {
... 'uns': ['Jair'], 
... 'pinya': ['Jair', 'Aureli'], 
... 'tresos':['Aureli'], 
... 'quatres': ['Aureli']
... }: print(d)

Trobaràs més tests al fitxer test-actualitza_dic_posicions.txt.


castellers.ordena_dic_posicions(dp)

dp és un diccionari de posicions.

La funció modica dp ordenant alfabèticament la llista de noms de castellers de cada una de les posicions.

Per exemple:


>>> d = {
... 'enxanetes': ['Victoria', 'Romina'],
... 'uns': ['Jair'],
... 'pinya': ['Pepet', 'Aureli', 'Filibert', 'Jair', 'Tarsici', 'Jaume'],
... 'dosos': ['Tarsici', 'Jaume', 'Filibert', 'Pepet'],
... 'acotxadors': ['Fergana', 'Spira', 'Jasmina'],
... 'quatres': ['Tibur'],
... 'cincs': ['Tito', 'Joan'],
... 'tresos': ['Fidel', 'Aureli']
... }

>>> ordena_dic_posicions(d)

>>> if d != {
... 'enxanetes': ['Romina', 'Victoria'],
... 'uns': ['Jair'],
... 'pinya': ['Aureli', 'Filibert', 'Jair', 'Jaume', 'Pepet', 'Tarsici'],
... 'dosos': ['Filibert', 'Jaume', 'Pepet', 'Tarsici'],
... 'acotxadors': ['Fergana', 'Jasmina', 'Spira'],
... 'quatres': ['Tibur'],
... 'cincs': ['Joan', 'Tito'],
... 'tresos': ['Aureli', 'Fidel']
... }: print(d)

Trobaràs més tests al fitxer test-ordena_dic_posicions.txt.

Ara ja pots dissenyar la funció lacolla().

castellers.lacolla(nomf)

nomf és el nom d’un fitxer de posicions.

Retorna un diccionari de posicions calculat a partir de les dades del fitxer nomf.

Per exemple:


>>> d = lacolla('colla.txt')

>>> d['enxanetes']
['Romina', 'Victoria']

>>> d['cincs']
['Joan', 'Tito']

>>> d['pinya']
['Aureli', 'Filibert', 'Jair', 'Jaume', 'Pepet', 'Tarsici']

>>> if d != {
... 'enxanetes': ['Romina', 'Victoria'],
... 'uns': ['Jair'],
... 'pinya': ['Aureli', 'Filibert', 'Jair', 'Jaume', 'Pepet', 'Tarsici'],
... 'dosos': ['Filibert', 'Jaume', 'Pepet', 'Tarsici'],
... 'acotxadors': ['Fergana', 'Jasmina', 'Spira'],
... 'quatres': ['Tibur'],
... 'cincs': ['Joan', 'Tito'],
... 'tresos': ['Aureli', 'Fidel'],
... }: print(d)

Trobaràs més tests al fitxer test-lacolla.txt.

Solucions

Trobaràs una solució al fitxer castellers.py.