Test solveur Sudoku sans VBA

Hello tout le monde :)

Il y a quelques semaines, mon père m'a fait "découvrir" les Sudoku...

J'ai très vite accroché et me suis très vite dit qu'il devait être possible de réaliser un solveur en Excel.

Par principe, je n'utilise pas VBA (j'ai par contre testé un peu LAMBDA).

Bon... C'est un peu moche pour le moment ^^ Mais j'arrive au même résultat que la majorité des solveurs se basant sur la position unique...

image

En haut à gauche, nous avons notr grille qui est la seule chose que nous pouvons modifier sur la feuille.
Juste à côté, nous avons :

image

Ici ce sont les informations concernant chaque "carré".
A gauche nous avons le nom de la cellule et pour chaque, la colonne indique si ce nombre est possible ou non.
La ligne en bas de chaque carré et celle à droite indiquent s'il y a un unique et donc un nombre qui correspond à la réponse.

Un peu plus bas, nous retrouvons la même chose pour les colonnes et pour les lignes (9 à gauche pour les colonnes et 9 à droite pour les lignes)

image

Il y a de nombreuses choses "inutiles", dans le sens où elles n'apportent pas d'informations mais sont indispensables pour le bon fonctionnement de la feuille.
C'est tout ce qui est à droite et sort des fenêtres monrées :

image

Enfin, ici nous avons les résultats proposés :

image

Si une case est complètement verte c'est que c'est la seule solution (en cours de réalisation car il faut faire une mise en forme conditionnelle par groupe de cellules), si elle aparait en petit c'est que c'est la bonne solution parmis toutes les autres possibles.
Je pourrais faire en sorte, via une mise en forme conditionnelle, de cacher les autres possibilités mais elles seraient toujours là, juste cachées. Mon but est de faire en sorte qu'elles ne soient pas là et c'est donc à un autre endroit que cela doit se faire.

Avec ce système, ça marche jusqu'à un cas comme le suivant qui est un sudoku de haut niveau :

image

Il n'y a plus de solution immédiate possible, mais la stratégie des doubles nous permet de voir :

image

Vu que 7 et 9 doivent obligatoirement se trouver dans les deux cases du bas, ils ne peuvent se retrouver dans les trois du haut.
La case du haut a donc comme valeur unique possible 5.

Pour le moment, je teste la solution suivante.
Chaque case d'un sudoku a une valeur binaire allant de 000000000 (9x0) à 111111111(9x1).
Donc par exemple, voilà les cinq lignes qui nous intéressent :

123456789

000010101
101010101
000000101
000000101

Pour chaque colonne (pour le moment, ensuite ce sera ligne), j'isole les lignes ayant 2 digits et étant les mêmes.

L'idée c'est de vérifier pour toutes les autres cellules de la colonne si ces digits peuvent être soustraits des autres et si oui, le faire.

Ce qui donnerait :

123456789
000010101 - 000000101 = 000010000 → 5
101010101 - 000000101 = 101010000 → 1,3,5

5 devient la seule solution possible pour cette colonne.

Un autre exemple de la même grille :

image

Sur la ligne en jaune, nous voyons que le 4 ne peut se trouver que dans un de ces deux emplacement vu qu'il est nulle part ailleurs sur la ligne.

Cela veut dire que l'on peut supprimer tous les 4 se trouvant sur les lignes rouges.

Idéalement, je vais créer un double de cette grille où chaque nombre de 1 à 9 aura un autre nombre qui correspondra à son "statut" et à la manière dont il doit être considéré par les autres.

J'imagine que tout n'est pas clair, mais je vous mets en pièce jointe le fichier :)

Bonne année :)

18sudokutest6.xlsx (259.85 Ko)

Bonjour,

Désolé, je ne sais pas comment vous aider, car je dirais que, comme vous par principe, pourquoi faire simple quand on peut faire compliqué.

Bonne résolution.

Cordialement

Hello VanlindtMarc,

Avec une méthode par formules. Il me semble que cela peut être adapté aux sudokus à force débutant, voire moyen.

Mais plus compliqué pour les difficiles.

Tu peux toujours testé avec SUDO sur ce site: Jeu Sudo

Bonne fêtes...

Rechercher des sujets similaires à "test solveur sudoku vba"