Una empresa de vegades necessita enviar a dos treballadors per a realitzar reparacions. Per formar les parelles té les dades dels treballadors en un diccionari en el qual la clau és el nom d’un treballador i el valor la llista amb els noms de la resta de treballadors amb els que està disposat a treballar. Que el treballador ’pep’ estigui disposat a treballar amb ’paco’ no implica que ’paco’ estigui disposat a treballar amb ’pep’. És possible que algun treballador no vulgui treballar amb ningú.
Quan un treballador deixa l’empresa s’esborra la seva entrada del diccionari, però el seu nom pot seguir apareixent a les llistes de preferencies d’altres treballadors.
Programa una funció @limpia(preferencias)@ que, donat un diccionari @preferencias@ com el descrit a l’inici, retorni un nou diccionari en el qual s’han tret els noms de treballadors que ja no estan en l’empresa, és a dir, que ja no són claus.
L’empresa necessita enviar treballadors a realitzar reparacions. Programa una funció @empareja(ltrab, preferencias)@, que donada una llista @ltrab@ de treballadors de l’empresa destinats cadascun a una reparació diferent, i un diccionari @preferencias@ com el descrit a l’inici, retorni un diccionari que associï cada empleat destinat a reparacions amb els possibles acompanyants (aquells que es prefereixen mútuament però no estan destinats a un altre servei de reparació diferent).
Apartat 1: 45 puntos.
Apartat 2: 55 puntos.
>>> d1 = {'pep': ['pau', 'marc', 'eva'], 'pau': ['ana', 'lluc']} >>> d2 = limpia(d1) >>> d2 == {'pep': ['pau'], 'pau': []} True >>> serv = ['sabrenia', 'rowhn', 'storms'] >>> prefs = {'jennafer-lee': ['storms', 'sabrenia', 'sarma', 'nyera'], ... 'niloofar': ['jennafer-lee', 'rowhn', 'aaniah', 'brents'], ... 'sabrenia': [], ... 'rowhn': [], ... 'ishrat': ['aaniah', 'lyndell', 'lavarr', 'sarma', 'sanburn'], ... 'nyera': ['maxantia'], ... 'maxantia': ['nüket', 'storms', 'jerid', 'lavarr', 'nică'], ... 'sanburn': ['niloofar'], ... 'sarma': ['jerid', 'nüket', 'rowhn', 'sanburn'], ... 'aaniah': ['sabrenia', 'nică', 'niloofar', 'jennafer-lee'], ... 'nüket': ['nică', 'maxantia'], ... 'nică': ['storms', 'lavarr', 'sarma', 'rowhn'], ... 'storms': ['aaniah', 'maxantia', 'lavarr', 'nică']} >>> emp = empareja(serv, prefs) >>> emp == {'sabrenia': [], 'rowhn': [], 'storms': ['maxantia', 'nică']} True