On est justement dans un problème d'optimisation (pour une fois).comment un programme peut il te sortir instantanément la solution avec le nombre de possibilités a tester ?
Souvent, on donne des conseils de codages alors que c'est inutile. Quelle importance de mettre 10ms ou 15ms pour faire afficher "bonjour toto"?
Mais quand tu répètes des milliards de fois une opération, tout gain sur 1 tour, te fait gagner beaucoup sur l'ensemble car c'est multiplié énormément.
L'opération charnière, ici, est la vérification. Il faut donc un accès direct à cette information. J'ai donc 3 tableaux qui disent directement si un nombre est présent dans la colonne, la ligne, la région. L'élimination est immédiate. Il ne faut pas attendre qu'une fooooooonctiooooooon paaaaarcouuuuuurt toooooon taaaaableauuuuuuuuuu pour découvrir que le dernier chiffre que tu as inséré (et le seul que tu aies inséré!!!!) soit non valide.
Entre des appels à fonctions, des additions, des recopies de données, etc .... et une simple lecture en mémoire, j'ai choisi. Je prends la seconde.
Avec un ordi qui fait plus d'un milliard et demi de cycles à la seconde, et un temps d'exécution de 0,06s, il a mis 90 millions de cycles pour résoudre le sudoku: ça laisse de la place pour faire des choses... et notamment des lectures en mémoire.
J'ajoute que la solution n'est pas forcément la grille la plus lointaine. Quoiqu'ici, il prolonge 1 à 3 dixièmes de secondes quand on fait toutes les grilles possibles. Non significatif.