5.9 Corrigés des exercices
101
}
return true ;
}
for (int i = O; i < 4; i++) {
}
Intersection voisine = inter . voisine ( i );
if (goban [voisine ._x] [voisine ._y] == couleur )
if (minLib (voisine , 2) > 1)
return true ;
unsigned long long h = hashSiJoue (inter , couleur );
for ( int i = nbCoups Joues - l; i >= O; i--)
if ( HashHistory [ i] == h)
return false ;
r et u rn ( min Li b If P 1 a y ( inter , cou 1 eu r , 1 ) > 0) ;
unsigned long long hashSiJ oue (Intersection inter ,
int couleur ) {
unsigned long long h = hash ;
int adversaire = Noir ;
i f ( c o u 1 e u r == Noir )
adversaire = Blanc ;
dejavu2. init ();
dejavu2 . marque (inter );
h 11= HashArray [couleur ] [inter ._x] [inter ._y];
h "= HashTurn ;
for (int i = O; i < 4; i++) {
Intersection voisine = inter . voisine (i );
if (!dejavu2 . marquee (voisine )) {
if (goban [voisine ._x] [voisine ._y] == adversaire )
if ( minLib (voisine , 2) == 1) {
stack st ;
dejavu2. marque (voisine );
st . push (voisine );
while (! st . empty ()) {
Intersection courante = st . top ();
s t. pop ();
h "= HashArray [go ban [voisine . _x ]
[ vois i ne . _y ] ] [ cou ra nt e . _x ]
[ courante . _y ] ;
fo r (int j = O; j < 4; j++) {
Intersection pierre = courante . voisine (j );
if (goban [pierre ._x] [pierre ._y] ==
adversa ire )
Précédent

- 115/256

Suivant