Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
3 Come funziona? 3
4 Programma 4
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.
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")
• 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.
6 Conclusioni
Mi ha reso felice mettendomi alla prova e di come mi abbia fatto notare
nuove strutture.