Sei sulla pagina 1di 6

MasterMind

Alex Grab, 3 E

a.s. 2020/2021

Ho scelto MasterMind per la sua difficoltà rispetto agli altri esercizi e per
l’utilizzo di tutto quello che abbiamo imparato a lezione.

1
Indice
1 Cos’è MasterMind? 3

2 Chi l’ha creato? 3

3 Come funziona? 3

4 Programma 4

5 Spiegazione funzionamento programma 5

6 Conclusioni 6

2
1 Cos’è MasterMind?
MasterMind è un gioco da tavolo astratto di crittoanalisi per due giocatori, in
cui un giocatore, il decodificatore, deve indovinare il codice segreto composto
dal suo avversario, detto codificatore.

2 Chi l’ha creato?


MasterMind è stato inventato nel 1970 da un esperto di telecomunicazio-
ni israeliano Mordecai Meirowitz. MasterMind è uno dei giochi utilizzati
all’interno del Mind Sports Olympiad, competizione multidisciplinare per
promuovere giochi di abilità mentale.

3 Come funziona?
Nella versione originale del gioco, il codificatore crea il codice segreto con 4
cifre e deve utilizzare le 10 cifre del sistema decimale standard ossia da 0 a9.
Ed ha al massimo 9 tentativi. Dopo che il codice segreto è stato composto,
il decodificatore con il suo primo tentativo prova a decodificare il codice
segreto. Appena il decodificatore ha svolto il suo tentativo il codificatore da
degli indizi riferendo il numero di cifre giuste al posto giusto, ed il numero di
cifre giuste al posto sbagliato. Tutto ciò va svolto senza indicare le effettive
cifre giuste o sbagliate ma solo quante. Se il codificatore riesce ad indovinare
il codice segreto entro 9 tentativi vince, se no vince il codificatore.

3
4 Programma
import random

a = [0,0,0,0]
x = random.sample(range(0,10),4) #codice segreto
i = 0 #indice array
j = 0 #n tentativi
c = 0 #contatore n gisti in posizioni giuste

def inserisciCodice():
i = 0
while i>= 0 and i<4:
a[i] = int(input("inserisci la cifra: "))
if a[i] >9 or a[i]<0:
print("il valore deve essere compreso tra 0 e 9")
else:
i = i+1

def cifreCorrette():
c = 0
for k in range(0,4,1):
if a[k] == x[k]:
c = c+1
print("NUMERO CIFRE C0RRETTE: ",c)
return c

def cifrePresenti():
c = 0
for k in range(0,4,1):
for z in range(0,4,1):
if a[k] == x[z]:
c = c+1
print("NUMERO DI CIFRE PRESENTI: ",c)
return c

while j<9:
inserisciCodice()

4
if cifreCorrette() == 4:
print("HAI VINTO!",x)
break
cifrePresenti()
j = j+1

if j>=9:
print("HAI ESAURITO I TENTATIVI")

5 Spiegazione funzionamento programma


Ho deciso di suddividere il codice in tre funzioni diverse.
• inserisciCodice
è una funzione con ritorno void utilizzata per l’inserimento del guessed
code. Il metodo è composto da un ciclo while che costringe l’utente
ad inserire tutte e quattro le cifre comprese tra 0 e 9. Se il giocatore
inserisce un numero non accettabile il contatore i non aumenta e viene
richiesto un altra volta il riempimento della cifra sbagliata in preceden-
za.

• cifreCorrette
cifreCorrette è la funzione con return di un intero che, utilizzando un
ciclo for con indice da 0 a 3, scorre contemporaneamente il vettore del
codice segreto e del tentativo inserito contando quante di queste cop-
pie coincidono. Il metodo funzionerebbe anche senza un return ma ho
deciso di includerlo per utilizzarlo anche come controllo per la vittoria,
infatti, se le cifre corrette nelle posizioni corrette sono quattro, allora il
gioco termina con la vittoria dell’utente.

• cifrePresenti
questo metodo conta il numero di cifre del tentativo presenti nel codice

5
segreto. Per riuscire in questo ho utilizzato un primo ciclo for con in-
dice da 0 a 3 che confronta ogni cifra del guessed code con tutte quelle
del codice, navigato invece da un for identico al precedente.

Descritte queste funzioni, è possibile parlare della parte principale del


programma. Quest’ultima è composta da un ciclo while che rappresenta
il massimo numero di tentativi, ad ogni turno verrà richiesto l’inserimen-
to del guessed code (inserisciCodice), successivamente avverrà il controllo
per la vittoria oppure la semlice stampa del numero di cifre corrette nei
posti corretti (cifreCorrette) ed infine saranno stampate le cifre presenti
(cifrePresenti).

6 Conclusioni
Mi ha reso felice mettendomi alla prova e di come mi abbia fatto notare
nuove strutture.

Potrebbero piacerti anche