Je suis débutante en python et je viens de réaliser un master mind où l'ordinateur doit trouver la combinaison secrète de l'utilisateur en un minimum de coups. Le code marche très bien et mon programme met en moyenne 4coups pour trouver la solutions mais j'aimerais savoir si je pouvais l'optimiser car un ami m'a dit que mon programme ne l'était pas du tout. Dans ce code les couleurs sont représenté par des chiffres de 1 à 6.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
def noir_blanc(a, nbl):
    b = []
    global possibility, bl, n
    for i in possibility:
        n = 0
        bl = 0
        for chiffre in range(4):
            if i[chiffre] == a[chiffre]:
                n = n+1
        bl = min(a.count(1), i.count(1)) + min(a.count(2), i.count(2)) + min(a.count(3), i.count(3)) + min(a.count(4), i.count(4)) + min(a.count(5), i.count(5)) + min(a.count(6), i.count(6)) - n
        if n == nbl[0] and bl == nbl[1]:
            b.append(i)
    possibility = b
 
 
a = [1, 1, 1, 1]
possibility = []
for i in range(1,7):
    for k in range (1,7):
        for j in range (1, 7):
            for l in range (1, 7):
                possibility.append([i, k, j, l])
 
for i in range(12):
    print("Voici mon hypothèse", a, " "*70, i+1)
    nbl = input("Nombre de chiffres bien placés puis nombre de bons chiffres mais mal placées")
    print("-"*100)
    nbl = list(nbl.replace(" ", ""))
    for j in range(2):
        nbl[j] = int(nbl[j])
    noir_blanc(a, nbl)
    if len(possibility)==1:
        print("je sais la réponse est", possibility[0], "j'ai trouvé en ", i+1, "coups")
        break
    if len(possibility)== 0:
        print("il semblerait qu'il n'y ait pas de réponse possible vous vous êtes peut etre trompé ")
        break
    a = possibility[0]