solution mastermind

solution

#%% methode utilisant des listes
from random import choice

ordi = ""

for i in range(4):
    ordi += choice(('J','O','C','R','V'))
ordi = list(ordi)
print(ordi)

joueur = []
essais = 0
while joueur!= ordi and essais < 12:
    joueur = list(input("entrer une combinaison de 4 couleurs (JOCRV)"))
    correspond = ordi.copy()
    essais += 1
    B = 0
    N = 0
    for i in range(4):
        if joueur[i] == ordi[i]:
            N += 1
            correspond[i] = 'X'
            print('trouve {} à la position {} dans {}'.format(joueur[i],i,ordi))
    for i in range(4):
        if joueur[i] in correspond:
            j = correspond.index(joueur[i])
            print('joueur[{}] dans {} , index={}'.format(i,correspond,j))
            correspond[j] = 'X'
            B += 1
    print(ordi,correspond)
    print("B:{}, N: {}".format(B,N))
    
if joueur == ordi:
    print('c est gagné!')
else:
    print("perdu")

Exemple d’utilisation:

['R', 'J', 'V', 'J']
entrer une combinaison de 4 couleurs (JOCRV)JJJJ
trouve J à la position 1 dans ['R', 'J', 'V', 'J']
trouve J à la position 3 dans ['R', 'J', 'V', 'J']
['R', 'J', 'V', 'J'] ['R', 'X', 'V', 'X']
B:0, N: 2
entrer une combinaison de 4 couleurs (JOCRV)RJJV
trouve R à la position 0 dans ['R', 'J', 'V', 'J']
trouve J à la position 1 dans ['R', 'J', 'V', 'J']
joueur[1] dans ['X', 'X', 'V', 'J'] , index=3
joueur[3] dans ['X', 'X', 'V', 'X'] , index=2
['R', 'J', 'V', 'J'] ['X', 'X', 'X', 'X']
B:2, N: 2
entrer une combinaison de 4 couleurs (JOCRV)RJVJ
trouve R à la position 0 dans ['R', 'J', 'V', 'J']
trouve J à la position 1 dans ['R', 'J', 'V', 'J']
trouve V à la position 2 dans ['R', 'J', 'V', 'J']
trouve J à la position 3 dans ['R', 'J', 'V', 'J']
['R', 'J', 'V', 'J'] ['X', 'X', 'X', 'X']
B:0, N: 4
c est gagné!