guigui51250 a écrit:bah trouver un algo ou une façon de résoudre un sudoku niveau 1ère... a part réfléchir puis le faire traditionnellement il n'y a rien
Ce n'est pas parce que tu n'as pas cherché d'algo qu'il faut dire de suite qu'il n'y a rien !!!
1) il faut considérer chaque ligne, chaque colonne, chaque carré 3x3 comme une zone (au sens algorithmique du terme). Bien entendu, chaque zone est reliée à toutes les autres puisque les lignes et colonnes et carrés se croisent en tous sens
2) pour chaque position de la zone (donc de chaque ligne, de chaque colonne, de chaque carré), tu regardes quels sont les chiffres qui y vont de 1 à 9 => si un seul chiffre est possible dans la case (parce que tous les autres sont en double dans une des zones associées), c'est le bon alors tu le places
3) tu prends ensuite chaque chiffre de 1 à 9 et tu regardes à quel endroit de la ligne tu peux le placer. S'il ne se place qu'à un seul endroit possible, alors c'est le bon donc tu le places. Tu fais de même pour chaque case de la colonne et chaque case du carré
4) si les phases 2 et 3 ont engendrées une modif, tu recommences alors à 2 sinon c'est qu'on ne peut plus le résoudre de façon algorithmique simple donc faut passer, comme l'a dit Lapras, en brute force
brute force: algorithme récursif => tu prends la première des cases restantes et tu y places un chiffre parmi tous les chiffres restants (en vérifiant qu'il est autorisé) puis tu ré appelles l'algorithme pour les cases vides restantes
=> si plus aucun des chiffres ne peut être placé alors que la case est vide, c'est qu'un des chiffres en amont est mauvais => tu arrètes l'algo à ce niveau et tu remontes au niveau précédent où tu places un autre des chiffres possibles => etc etc
=> s'il n'y a plus de case vide, c'est que le sudoku est résolu.