static bool GenGrid(int position, int[,] grid) { Random NumRand = new Random(); int num; //int chosenNum; int line = position/9; int col = position%9; //int position = 0; bool[] tried = new bool[9]; for(int i=0;i<9;++i) { tried[i] = false; } for(int i=0;i<9;++i) { /* Generer un nombre de 1 a 9 et verifier s'il a deja * ete essaye, Si oui en obtenir un autre (continue), * sinon signifier qu'il a ete essaye */ num = NumRand.Next(1, 10); if(tried[num-1]==true) { --i; continue; } else { tried[num-1] = true; } /* Si le nombre est valide pour la grille, l'inscrire dans la * grille et appeler GenGrid de nouveau en incrementant la * position. Sinon, essayer un autre chiffre. */ if(check(grid, line, col, num)==true) { if(position==80) { grid[line, col] = num; return true; } else { grid[line, col] = num; if (GenGrid(position + 1, grid) == true) { //grid[line, col] = num; return true; } else { grid[line, col] = 0; continue; } } } } return false; //Tous les chiffres de 1 a 9 ont ete essayes sans succes. } static bool check(int[,] p_Grille, int p_Ligne, int p_Col, int p_Nombre) { //check la region 3x3 int regionV = (p_Ligne - (p_Ligne % 3)); int regionH = (p_Col - (p_Col % 3)); for (int i = regionV; i < regionV + 3; i++) { for (int j = regionH; j < regionH + 3; j++) { if (p_Grille[i, j] == p_Nombre) return false; } } //check ligne for (int i = 0; i < 9; i++) { if (p_Grille[p_Ligne, i] == p_Nombre) return false; } //check colonne for (int i = 0; i < 9; i++) { if (p_Grille[i, p_Col] == p_Nombre) return false; } return true; }