Update MiniMaxPetiteOpti.java
This commit is contained in:
parent
2b114b3d51
commit
3608d5e8cb
@ -1,22 +1,68 @@
|
|||||||
public class MiniMaxPetiteOpti {
|
public class MiniMaxPetiteOpti {
|
||||||
|
|
||||||
public static int depart = 5;
|
public static int[] tests = {5,11,17,42,100};
|
||||||
|
|
||||||
private static int compteur;
|
private static int compteur;
|
||||||
|
|
||||||
|
static long debut;
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
int n = depart;
|
|
||||||
|
for(int n: tests) {
|
||||||
|
debut = System.nanoTime();
|
||||||
compteur = 0;
|
compteur = 0;
|
||||||
|
System.out.print(n + " allumettes : ");
|
||||||
int s = Nim(n);
|
int s = Nim(n);
|
||||||
if (s == 1){
|
if (s == 1) {
|
||||||
System.out.print("Gagné");
|
System.out.print("Gagné ;");
|
||||||
} else {
|
} else {
|
||||||
System.out.print("Perdu");
|
System.out.print("Perdu ;");
|
||||||
|
}
|
||||||
|
long fin = System.nanoTime();
|
||||||
|
System.out.print(" Temps écoulé (ms) : "+((fin-debut)/1000000)+" ;");
|
||||||
|
System.out.println(" Compteur = " + compteur);
|
||||||
}
|
}
|
||||||
System.out.println(" Compteur = "+compteur);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int Nim(int n){
|
public static int Nim(int n){
|
||||||
return exploreMax(n);
|
return exploreMax(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Vérifie les issues des coups jouables par le J1 et renvoie 1 si le J1 a une opportunité de gagner a coup sur
|
||||||
|
*/
|
||||||
|
public static int exploreMax(int allumette) {
|
||||||
|
compteur++;
|
||||||
|
if ((System.nanoTime()-debut)/1000000 > 100000 ){
|
||||||
|
System.out.println("TimeOut au bout de 100 secondes");
|
||||||
|
System.exit(-1);
|
||||||
|
}
|
||||||
|
for (int i=0;allumette>1&&i<3;i++){
|
||||||
|
allumette--;
|
||||||
|
int v=exploreMin(allumette);
|
||||||
|
if (v==1){
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Vérifie les issues possibles des coups du J2 et renvoie -1 si le J2 a une opportunité de gagner a coup sur
|
||||||
|
*/
|
||||||
|
public static int exploreMin(int allumette){
|
||||||
|
compteur++;
|
||||||
|
for (int i=0;allumette>1&&i<3;i++){
|
||||||
|
allumette--;
|
||||||
|
int v=exploreMax(allumette);
|
||||||
|
if (v==-1){
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user