J'écris une fonction qui devrait générer des puzzles de sudoku aléatoires pour un projet de simulation; cette fonction prend comme argument le nombre de cellules à générer puis génère les indices de cellules et de nombres à mettre dans ces cellules. J'ai un problème dans la génération d'index de cellules, je ne suis pas un expert en programmation et je ne peux pas trouver une bonne routine pour générer des index et vérifier qu'il ne s'agit pas du même index deux fois ou plus. Le funcion est:Génération de sudoku aléatoire
void gen_puzzle(int quanti)
{
if(quanti>81) exit(1);
indexes* ij=new indexes[quanti];
int f,g,k, controllo=1;
do
{
for(f=0; f<9; f++)
for(g=0; g<9; g++)
{
puzzle[f][g].num=0;//puts 0 in the sudoku puzzle
puzzle[f][g].p=0;
}
//////////////section to improve
out:
srand(int(time(0)+clock()));
for(k=0; k<quanti; k++)
ij[k].i=casuale()-1, ij[k].j=casuale()-1;//generates random indexes of sudoku cells where put random nubers
for(f=0; f<quanti; f++)
for(g=f+1; g<quanti; g++)
{
if(ij[f].i==ij[g].i && (ij[f].j==ij[g].j)) goto out;
}
////////////////////
for(k=0; k<quanti; k++)
puzzle[ij[k].i][ij[k].j] . num=casuale();//puts random numbers in cells
}
while(dataNotGood()); //till sudoku isn't good
}
Je demande l'aide de la section où le funcion met les index aléatoires dans ij[]
tableau, je l'ai utilisé un goto
mais ce n'est pas une bonne solution et il ne se quanti
est bien fonctionne pas plus alors 17 au sujet .
casuale()
juste retourne un nombre aléatoire entre 1 et 9.
Il serait vraiment utile si vous traduisez vos commentaires italiens (?) Et les noms de variables –
traduit un peu ... quanti est juste le nombre de cellules à générer, et les index est juste une structure avec deux entiers –