Forum discussione progetto

Calcolo del punteggio

Calcolo del punteggio

by MATTEO LOPORCHIO -
Number of replies: 0
Riporto qui l'annuncio sul calcolo del punteggio, in modo da renderlo commentabile.

Uno studente (che ringrazio) ci ha segnalato un problema relativo alla formula per il calcolo del punteggio su Wordle. Nel testo del progetto (pag. 3) si dice infatti che:

"Il punteggio attribuito a ogni utente è calcolato in funzione del numero di parole indovinate e del numero di tentativi prima della conclusione vittoriosa del gioco. Il calcolo del punteggio per l’inserimento in classifica avviene moltiplicando il numero di partite vinte per il numero medio di tentativi impiegati per raggiungere la soluzione."

Questo metodo, però, presenta alcuni problemi.

  1. Se i punteggi in classifica fossero ordinati in modo decrescente (ovvero: punteggio più alto = giocatore "più bravo"), i giocatori che, a parità di parole indovinate, hanno impiegato meno tentativi sarebbero penalizzati. Ad esempio: il giocatore G1 ha indovinato 5 parole con 7 tentativi totali, mentre il giocatore G2 ne ha indovinate 5 ma con 9 tentativi totali. Il punteggio di G1 sarebbe 5 * (7/5) = 7 mentre quello di G2 sarebbe 5 * (9/5) = 9.
  2. Supponendo invece di ordinare in modo crescente (ovvero: punteggio più basso = giocatore "più bravo"), si avrebbe un altro problema, legato questa volta al numero di parole. Consideriamo G1 con 2 parole indovinate e 3 tentativi totali, mentre G2 ha 5 parole indovinate e 5 tentativi. Il punteggio di G1 sarebbe 2 * (3/2) = 3 mentre G2 avrebbe uno score pari a 5 * (5/5) = 5. Nella classifica, G2 sarebbe quindi dietro G1, il quale ha indovinato meno parole rispetto a G2.

Per risolvere questi problemi, è possibile implementare una soluzione "più sofisticata" (e anche più realistica), come quella descritta qui: https://www.brianfalkner.com/wang2022.asp 

Il Wordle Average Score (WAS) descritto al link di cui sopra tiene infatti conto del numero complessivo di partite giocate (e quindi anche delle parole che non sono state indovinate) ed è basato sulla guess distribution. La guess distribution di un utente è un vettore di interi avente lunghezza pari al numero massimo di tentativi. La posizione k-esima del vettore contiene il numero di parole indovinate dall'utente con esattamente k tentativi.

Ai fini del progetto, dunque, potete applicare la formula per calcolare il WAS, riadattandola al numero massimo di tentativi (12) descritto nella specifica. Per classificare i giocatori con il WAS, vale la regola "lower is better" (ovvero: punteggio più basso = giocatore "più bravo"). Per facilitare il lavoro, vi allego un esempio in Java.

Per eventuali dubbi, restiamo a disposizione.