3. Joc de paraules (3 punts)

  1. En un joc en el que els jugadors han de trobar paraules, la puntuació de cadascuna es calcula sumant un punt per cada caràcter i afegint uns punts extra.

    Representem les paraules d’un jugador com una llista d’strings i els punts extra de cada paraula com una llista d’enters de la mateixa longitud a on l’enter a cada posició i indica els punts extra de la paraula a la mateixa posició i.

    Per exemple, si les paraules són

    ['sol', 'lluna', 'cel']
    

    i els punts extra associats són

    [2, 1, 4]
    

    les puntuacions són, respectivament, 5, 6 i 7.

    Dissenya la funció pos_millor que donades una llista de paraules i una llista de punts extra, retorna la posició a la llista de la paraula amb puntuació màxima. Pots suposar que no hi ha haurà empats a les puntuacions totals i que la llista contindrà almenys un element.

    Desa la funció al fitxer paraules.py:

    Els següents doctests mostren exemples del que ha de fer la funció:

    >>> pos_millor(['vent', 'pluges', 'sol', 'boira'], [1, 1, 5, 1])
    2
    >>> pos_millor(['fulla', 'riu', 'neu'], [1, 2, 1])
    0
    

    Disposes de més tests al fitxer test-pos-millor.txt

  2. En una segona fase del joc, es treballa amb la llista original de paraules, però reordenada segons el criteri següent:

    • La primera part de la llista és el tros de la llista original que va des de la paraula amb puntuació màxima (inclosa) fins al final.

    • La segona part de la llista és el tros de la llista original que va des del principi fins a la paraula amb puntuació màxima (no inclosa), capgirat.

    Dissenya la funció reordena que donada una llista de paraules i una llista de punts extra, retorna una llista nova amb les paraules reordenades segons els criteris anteriors.

    Aquesta funció ha de cridar la funció pos_millor.

    Desa la funció al fitxer paraules.py:

    Els següents doctests mostren exemples del que ha de fer la funció:

    >>> reordena(['vent', 'pluges', 'sol', 'boira', 'mar'], [3, 0, 6, 0, 1])
    ['sol', 'boira', 'mar', 'pluges', 'vent']
    >>> reordena(['casa', 'mar', 'núvol', 'tempesta'], [0, 2, 1, 0])
    ['tempesta', 'núvol', 'mar', 'casa']
    

    Disposes de més tests al fitxer test-reordena.txt

    Disposes de solucions al fitxer paraules.py.