site perso d’Emmanuel Dieul contact
plan du site
Photos
Expériences professionnelles
Logiciels
CV et références

Sudoxel : un sodoku dans Excel

mardi 23 mars 2010

Sudoxel est un sudoku intégré dans un classeur Excel. Il permet aussi bien de générer des nouvelles grilles que d’accepter des grilles existantes.

JPEG - 581.5 ko
une copie d’écran de Sudoxel

Ce classeur Excel est complètement géré par des macros Visual Basic For Applications. L’algorithme de résolution de grille a été repris de suexg ; les sources de cet algorithme peuvent être trouvées via une recherche sur "suexg" dans un moteur de recherche.

Ce classeur a été testé sur MS Excel 2003 et MS Excel 2007.

Fonctionnalités

Sudoxel permet de générer des grilles de taille 4x4 ou 9x9. Ces grilles sont minimales (avec le moins de chiffres possibles) et avec une solution unique. La génération se fait en cliquant sur les boutons prévus.

Sudoxel permet également de saisir une grille existante (comme celles données sur cette page). Il devient alors simplement un support pour le remplissage des grilles :

  • il vérifie si la grille saisie possède une solution unique
  • il vérifie à chaque tour de jeu que la case remplie n’est pas contradictoire par rapport au reste de la grille

La saisie de la grille se fait via le champ de saisie situé entre les deux boutons de génération et lors d’un appui sur la touche [entrée].
Les cases vides sont représentées par des "." ; les "/" sont facultatifs.

Origine

Ce classeur a vu le jour lors d’un cours de Visual Basic pour Excel, en 2008. Quoi de plus sympathique pour apprendre la programmation que de le faire via des jeux ! A l’époque, ce classeur n’était pas aussi évolué.

Chemin faisant, j’ai amélioré l’interface et changé le moteur de résolution de grille. Tout ça pour venir au classeur qui est présenté ici.

Classeur et grilles

Excel - 620 ko
sudoxel.xls

Le classeur présenté ici fonctionne pour Excel 2003 mais devrait fonctionner avec la plupart des versions d’Excel. Un test a été lancé sous OpenOffice 3.1 mais n’a pas été concluant car certaines fonctionnalités graphiques disponibles en VBA ne sont pas supportées.
Peut être qu’une future version d’OpenOffice permettra de faire fonctionner Sudoxel !

La plupart du temps, Sudoxel génère des grilles assez simples ou moyennes (ceci vient de l’algorithme suexg). Pour les amateurs de grilles difficiles, j’ai généré 1 000 000 de grilles et vous donne ici le top des grilles les plus compliquées générées :

  1. niveau : 91761, grille : .../.76/2../.../1.3/.../.../.../.59/.9./.../72./.../.3./.9./..7/21./..8/54./.../.../.2./.61/.../3../.4./.8.
  2. niveau : 89616, grille : ..7/.../.../.../.../329/3../6../..4/.../.../.../.../.4./..1/4.8/72./.9./75./.9./.1./..6/.../.../..1/.3./8..
  3. niveau : 80321, grille : .5./6../4../91./.../.8./.../.../..5/.3./.5./2.4/.../.../73./.../.7./.../..3/..4/.../5../.92/.../..2/.3./86.
  4. niveau : 79610, grille : 9../438/.1./1../.../.../.../.../8../4../.93/7../38./.../..5/2../.5./.../8../1../..2/.9./.../.4./..3/..7/...
  5. niveau : 77813, grille : .43/1../.../.../4../..5/.../.25/..9/9../.8./.../.../7../.../.2./..6/8../31./.../7.4/8../.../16./.7./.4./...
  6. niveau : 77080, grille : .../.87/5../.../3../.../9.8/.1./.../.../9../31./6../.../.../..4/..1/..9/..2/.4./9.8/4../..5/..2/.../7../..1
  7. niveau : 76286, grille : 96./.4./.1./.8./7../6../.4./.../..5/3../5.9/.8./.../..6/..1/..2/..1/9../.3./..8/.../.../.../.7./.../15./..3
  8. niveau : 74202, grille : .83/.../5../.2./..8/..9/74./.1./.../.../25./..7/.../..1/.../2../.../68./..5/..6/1../.../..4/.../.../.../73.
  9. niveau : 74157, grille : .3./.41/85./.25/3../.../.../.../.../8../.../..3/5../.6./.4./.9./.../..2/..4/..6/1../.../.../..9/.../73./.6.
  10. niveau : 70133, grille : .../.../..4/..8/.5./9.2/.../.../.78/.../5../3.6/.../.7./.2./42./9../.../29./.8./.../..5/.1./.../..6/3../.9./
  11. niveau : 67954, grille : .../4../7../3../.5./2../..1/.93/..6/.../..8/3.2/9../5../..4/.../.3./.../.../3../.2./71./.../.../.68/..4/...
  12. niveau : 66707, grille : ..2/3../7../18./.../.2./..7/.9./.../3.6/.1./.4./.2./.../38./9../.../..7/.../.35/.../.../2.6/.1./.../.../5..
  13. niveau : 65934, grille : ..2/.../.65/.../6.7/9../.../1../7../..5/.../.8./.../.1./.5./437/.../..6/.../.../..8/.28/.79/..1/.4./..1/6..
  14. niveau : 65599, grille : 9.1/.../.../.../.3./2.4/.../6.7/.../.../.../.1./.75/.../.../.4./.7./.85/.../.62/.9./.../..3/.../264/..5/...
  15. niveau : 65186, grille : 2../.../.../.5./4.8/.../..9/.3./.16/.9./.../..3/.3./.7./.5./1../.../8../3../.6./.97/.6./.../5../.../2../.6.

En copiant/collant ces grilles dans Sudoxel (dans le champ de saisie), la grille se créera automatiquement.