Je m'explique. Pour créer des grilles jouables de différents niveaux j'ai décidé de partir d'une grille fini, de retirer une case aléatoirement et d'appeler un solveur.
Jusque là ça me parait jouable, mais par contre j'arrive pas à créer une grille dans un temps raisonnable. Mon algo ( implémenté en C) met 5-10 pour me faire un grille, c'est beaucoup trop long.
Alors voici mon algo
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 faireLigne(i) { int compt; for(comp=0;compt<9;compt++) faireCaseAléa(i,compt); si erreurSurLigne compt--; } faireGrille() { int compt; for (compt=0;compt<9;compt++) { faireLigne(compt); si (erreurSurColonne OU erreurSurBloc) compt--; } }
Donc bon le backtrack c'est bien mais c'est pas très optimisé. J'ai pas trop d'idée sur comment faire autrement.
J'ai pensé à une méthode de permutation de grille, mais il faut une grille de base et ça me plais pas trop. C'est pas trop propre je trouve, pis j'ai pas envie d'oublier des grilles.
Partager