Bonjour.
Les conseils ci-dessous traiterons des concepts mais ne discuterons pas des algorithmes ou de la programmation. Nous développerons une manière de faire. Certainement y en a t-il d'autres bien plus intéressantes ou élaborées.
Réponse : Pour générer un sudoku il vous faut tout d'abord créer une grille complète et ensuite y retirer le maximum de chiffres de telle sorte que la grille incomplète obtenue n'accepte qu'une seule et unique solution. C'est tout.
Développons avec un peu de maïeutique :
Comment créer une grille complète ?Simplement en
résolvant une grille
vide.
Le code proposé dans le site résout toute grille, même les vides.
http://www.top-sudoku.com/sudoku/fr/exemple-backtracking-c.php Inconvénient, en cas résolution de grille vide, le code proposé vous donnera toujours la même solution commençant par 1, 2, 3, 4, etc...
Comment obtenir une suite de grilles complètes différentes ou plus exactement en ayant une petite probabilité d'une malchance sur 6,6 par 10 puissance 21 d'avoir deux résultats identiques à la suite ?En vous débrouillant pour sélectionner à
chaque coup à résoudre
une case au hasard.
Comment sélectionner une case au hasard ?Il y a une multitude de méthodes possibles. Mais allez au plus simple. Que diriez-vous d'un tableau fixe de
coordonnées de
coordonnées tirées au hasard ?...
La grille complète faite, comment retirer le maximum de chiffres de telle manière que la grille incomplète obtenue n'accepte qu'une seule et unique solution ?Retirer au fur et à mesure des chiffres au hasard en vérifiant à chaque retrait si cette grille admet une ou plusieurs solutions.
Comment vérifier si une grille admet une ou plusieurs solution ?Plusieurs méthodes :
° La moins esthétique et la plus longue : Résoudre plusieurs fois de suite la grille et vérifier si vous obtenez le même résultat. Bof...
° Avoir une méthode de résolution récursive qui, une fois la grille résolue, permet de revenir en arrière pour résoudre avec d'autres chiffres ; si aucune solution n'est possible avec d'autres chiffres alors la solution est unique.
Constat, conclusion et petits égarements.
On se retrouve ici dans un monde étrange ressemblant un peu à celui d'
Alice au pays des merveilles de Lewis Carroll, de son vrai nom Charles Dodgson, mathématicien dont certains écrits sont des contes -
et non pas des comptes - liés à la logique des mathématiques.
Ici tout est inversé. Pour créer un sudoku il vous faut tout d'abord le résoudre de rien. Ensuite la nécessité et la difficulté n'est pas tant de résoudre une grille mais de pouvoir détecter sa non résolution...
Christian.