Buonasera a tutti,
attualmente mi trovo "bloccato" in questa parte dell'esercizio, ossia con l'esempio dato nell'homework riesco ad arrivare alla lista [21, 12, 32, 12], che sarebbe la lista senza le penalizzazioni, ma non sto riuscendo ad implementare un algoritmo che mi permetta di togliere i punti di penalizzazione a ciascuno giocatore.
Se avete qualche suggerimento da darmi, vi sarei grato
Saluti,
Michelangelo
UPDATE 1
Grazie a tutti per l'aiuto !
Direi che il mio problema principale e trovare un modo semplice di decrementare il numero di lettere di ogni giocatore durante l'intera partitia.
Diciamo di avere un singolo ciclo che itera sulle parole di ogni giocatore, e delle condizioni annidate che si 'attivano' appena sono True, in base al valore corrente di num_letters.
Quale secondo voi è il modo migliore di tenere traccia del numero di lettere di ogni giocatore, dopo ogni mano giocata ?
Dovrei creare una funzione ausiliare, delle variabili annidate che corrispondo al numero di lettere di ogni giocatore dopo ogni mano o qualcos'altro di totalmente diverso ?
Grazie mille!
UPDATE 2
Grazie ancora a tutti per le risposte fornite!
Credo di essere arrivato ad una implementazione più meno giusta ma non riesco ancora ad ottenere le liste corrette perché ad ogni test ottengo uno o due giocatori che hanno risultati sbagliati.
Per intenderci, se prendo test_200_4_eng come esempio, il mio algoritmo crea, tramite una funzione ausiliare, una lista con tutte le parole di tutti i giocatori, in ordine di giocata/mano:
['flew', 'burr', 'zuni', 'tugs', 'pus', 'cup', 'buss', 'hats', 'gce', 'sess', 'rids', 'shat', 'bead', 'keep', 'wen', 'soon', 'msc', 'knox', 'bad', 'yule', 'zed', 'kph', 'omne', 'pawl', 'pull', 'bate', 'boar', 'poe', 'anon', 'ryas', 'imps', 'cups', 'eigg', 'aida', 'back', 'kcal', 'shot', 'reus', 'rase', 'bobs', 'clod', 'gala', 'pure', 'gush', 'flow', 'nit', 'slog', 'soap', 'dfc', 'inde'].
Utilizzo un'altra funzione ausiliare che prende una parola e mi dà il suo punteggio.
Poi, utilizzo un ciclo che itera su ogni parola e verifico se questa stessa parola si trova nella lista del giocatore 1, 2, 3 o 4.
Se la parola si trova nella lista del giocatore, verifico se num_letters è maggiore di 0.
Se la condizione è vera, allora incremento il punteggio del giocatore.
Altrimenti, incremento comunque il punteggio del giocatore ma decremento anche il numero di lettere del giocatore.
Alla fine, per ogni giocatore decremento il numero di lettere rimanenti al punteggio, 3 volte per ogni lettera.
La funzione per questo test mi dà [85, 89, 71, 72] mentre il risultato apettato dev'essere [88, 89, 71, 72].
Sapete dirmi dove sbaglio o darmi qualche consiglio ?
UPDATE 3
Sono riuscito a svolgere l'esercizio con un punteggio accettabile.
Grazie a tutti per i consigli!