-
Notifications
You must be signed in to change notification settings - Fork 0
/
Negamax.py
95 lines (85 loc) · 2.79 KB
/
Negamax.py
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from game import *
"""
def score2(etat,humain):
if est_terminal(etat):
if est_gagnant(etat) == humain:
return 42 - etat[2] #etat[2] est le nombre de coups joués
elif coups_possibles(etat) == [] :
return 0
else :
return etat[2] - 42
else :
return max([score2(jouer_coup(etat,coup),humain) for coup in coups_possibles(etat)])+1
def score(etat,me):
dico = dict()
def aux(etat):
if etat in dico:
return dico[etat]
else:
res=0
if est_terminal(etat):
if est_gagnant(etat) == me:
res = 42 - etat[2] #etat[2] est le nombre de coups joués
elif coups_possibles(etat) == [] :
res = 0
else :
res = etat[2] - 42
else :
res = max([aux(jouer_coup(etat,coup)) for coup in coups_possibles(etat)])
dico[etat] = res
return res
return aux(etat)
"""
def score(etat,me):
dico = dict()
def aux(etat):
(joueur,_,coups) = etat
if me==1:
(nbme,nbautre) = coups
else:
(nbautre,nbme) = coups
if etat in dico:
return dico[etat]
else:
res=0
if est_terminal(etat):
if coups_possibles(etat) == [] :
res = 0
elif est_gagnant(etat) == me :
res = 22 - nbme
else:
res = nbautre - 22
else:
if joueur == me :
res = max([aux(jouer_coup(etat,coup)) for coup in coups_possibles(etat)])
else:
res = min([aux(jouer_coup(etat,coup)) for coup in coups_possibles(etat)])
dico[etat] = res
return res
return aux(etat)
"""
print(score((1,((2,2,1,3,3,0,0),
(1,1,2,3,3,0,0),
(2,2,1,3,3,0,0),
(1,1,2,3,3,0,0),
(2,2,1,2,2,1,0),
(1,1,2,1,1,1,2),), (17,16)),
1))
"""
"""
print(score((1,((3,3,3,0,0,0,0),
(3,3,3,0,0,0,0),
(3,3,3,0,0,0,0),
(3,3,3,0,0,0,0),
(3,3,3,3,3,3,3),
(3,3,3,3,3,3,3),), 26),
1))"""
#display(partie_combi("2252576253462244111563365343671351441"))
print(score(partie_combi("2252576253462244111563365343671351441"),1))
# on doit trouver -1
#display(partie_combi("7422341735647741166133573473242566"))
print(score(partie_combi('7422341735647741166133573473242566'),1))
# on doit trouver 1
#display(partie_combi("65214673556155731566316327373221417"))
print(score(partie_combi('65214673556155731566316327373221417'),1))
# on doit trouver -1