HW2 req - Come gestire il numero di lettere in gioco (dim_hand vs. num_letters)

MRinaudo (3660 points)
18 40 50
asked Oct 24, 2020 in HW2 obbligatorio by MRinaudo (3,660 points)
closed Oct 30, 2020 by MRinaudo

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 smiley

Saluti,

Michelangelo

UPDATE 1

Grazie a tutti per l'aiuto ! laugh

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!

568 views
closed with note: Sono riuscito a svolgere l'esercizio con un punteggio accettabile.  Grazie a tutti per i consigli!

11 Answers

GiovanniChiara (830 points)
4 8 14
answered Oct 27, 2020 by GiovanniChiara (830 points)

'''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:'''

Posso chiederti di descrivere la funzione, nel rispetto delle regole? Grazie.

MRinaudo (3660 points)
18 40 50
commented Oct 29, 2020 by MRinaudo (3,660 points)
Ciao Giovanni,

ho fatto una lista di liste (o matrice) ma poi ho abbandonato questa idea perché poco efficiente.

Saluti,

Michelangelo