Programmation : [C] Résolution de sudoku
Cela fait un certains temps qu'il est terminé, mais je n'en avais encore jamais parlé. Il s'agit donc d'un programme pour résoudre une grille de sudoku. Capable de résoudre n'importe quelle grille, même si celle ci comporte plusieurs solutions dans la limite du temps que vous lui laissez.
Pour résoudre une grille complexe à une solution, le système mettra généralement moins de 200ms sur un système classique, et peut monter jusqu'à 3 milliards d'années (estimation personnelle
), pour résoudre une grille totalement vide.
Le code est disponible avec, sous licence MIT. Je n'ai pas essayé de le compiler sous windows, mais ça devrait fonctionner aussi.
Plusieurs options disponibles, l'affichage des solutions, le simple comptage du nombre de solutions etc ...
Je sais que certains algorithmes existent et fonctionneraient mieux que le miens, mais j'ai voulu chercher par moi même la façon de résoudre la grille. Dans un premier temps on cherche les possibilités de chaque case, en les éliminant selon les règles du sudoku classique.
Puis s'il y a plusieurs possibilités, on passe en brute force, et on recommence selon les règles etc ... Ce qui dans le cas d'un sudoku à plusieurs (millions de) solutions peut s'avérer extrêmement long à calculer.
Télécharger le programme de résolution de sudoku
Ce programme fonctionne simplement en lignes de commandes, n'y cherchez pas d'interface, néophytes abstenez-vous.
Posté par Romain le 9 Août 2008 à 00h12
Aucun commentaire n'a encore été déposé.
Les commentaires ne fonctionneront pas pour des raisons d'anti-spam sur les navigateurs non graphiques (sauf si vous avez du bol).