Prova di valutazione 14:
MasterMind

Questa prova di valutazione consiste nella scrittura di alcuni metodi Java per la gestione di array.

Nella parte finale del modulo è possibile scrivere eventuali problemi che sono stati riscontrati nello svolgimento di questa prova.


Esercizio 1: MasterMind.

Nel gioco del MasterMind un giocatore sceglie una sequenza di cifre decimali (tra 0 e 9) di 4 o 6 elementi, con possibili ripetizioni, e l'altro giocatore deve cercare di indovinare questa sequenza.
Il secondo giocatore propone al primo delle sequenze come tentativi, e il primo risponde indicando quanti sono i numeri indovinati in posizione corretta, definiti strike, e quanti quelli presenti nella sequenza da indovinare ma in posizione non corretta, definiti ball.

In caso di ripetizioni, nei conteggi ha la precedenza uno strike rispetto a un ball

Nel caso in cui una cifra sia presente sia nel tentativo sia nel risultato ma con un numero di ripetizioni differenti, prevale il numero di ripetizioni più piccolo.

Esempio di partita.
Sequenza scelta: 1 2 4 4

TentativoStrikeBall
1 1 1 110 Nella soluzione è presente un solo 1, quindi viene presentato un solo strike.
3 3 3 300
2 1 3 302 2 e 1 si trovano entrambi nella soluzione, ma in posizioni diverse da quelle proposte.
4 4 3 302
4 3 4 311 Nel tentativo si trovano due 4, di cui uno solo in posizione corretta.
4 4 4 311 Il tentativo propone tre 4, di cui uno in posizione corretta. Poiché nella soluzione sono presenti solo due 4, viene indicato un solo ball: viene considerato solo uno dei due 4 rimanenti.
1 2 3 430
1 2 4 330
1 2 4 440

In questo esercizio una sequenza viene rappresentata come un array di interi.

Si vogliono definire due metodi:

int contaStrike(int[] sequenzaScelta, int[] tentativo)
restituisce il numero di elementi giusti in posizione giusta
int contaBall(int[] sequenzaScelta, int[] tentativo)
restituisce il numero di elementi giusti in posizione errata

Osservazioni: Il metodo contaStrike è molto semplice. Il metodo contaBall è molto complicato.

E' utile definire anche una classe di test per i metodi definiti.

Quando hai scritto, compilato, eseguito e verificato quanto definito, seleziona, copia e incolla la definizione della classe MasterMind nella seguente casella di testo.


Difficoltà e problemi

Riporta nella seguente casella di testo eventuali difficoltà e problemi riscontrati nello svolgimento di questa prova di valutazione.


Invio della soluzione proposta

Scrivi chi sei nei seguenti campi

Cognome
Nome
Email

Premi Invia messaggio per inviare il messaggio, oppure Cancella per cancellare il contenuto del modulo.

Qualche secondo dopo aver premuto Invia messaggio, ti apparirà una pagina che riporta il testo del messaggio inviato.