4.10 Corrigés des exercices
83
}
return true ;
if (ordre == 0)
return fa lse ;
phutball . coupsLegaux (ordre , joueur , listeCoups );
for ( list :: iterator it = listeCoups . begin ();
}
it != listeCoups .end (); ++ it ) {
bool menaceVerifiee = false ;
phutball . joue (* it );
if (lambda (joueur , ordre - 1)) {
menaceVerifiee = true ;
}
int autre = adversaire (joueur );
if ( phutball . coupsLegaux (autre , listeCoupsAdverses ))
menaceVerifiee = fa lse ;
for ( list : : iterator itl =
}
listeCoupsAdverses . begin ();
(itl != listeCoupsAdverses .end ()) &&
me n ace V e ri fi e e ; ++ i t 1 ) {
phutball .joue (* itl );
if (!lambda (joueur , ordre ))
menaceVerifiee = fa Ise ;
phutball . dejoue (* it l );
phutball . dejoue (* it );
if ( menaceVerifiee )
return true ;
return fa lse ;
4.10.6 Elargissement Iteratif
Pour effectuer l'élargissement itératif on aj oute une boucle sur l'ordre de l'appel récursif dans la recherche À :
bool lambda ( int joueur , int ordre ) {
if ( phutball . gagne (joueur , phutball . balle ))
return true ;
int autre = adversa ire (joueur );
if ( phutball . gagne (autre , phutball . balle ))
return false ;
list listeCoups , listeCoupsAdverses ;
if ( phutball . coupsLegaux (0 , joueur , listeCoups ))
return true ;
if (ordre == 0)
return false ;
Précédent

- 97/256

Suivant