IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Feuille Excel pour résoudre les sudoku


Sujet :

Contribuez

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Par défaut Feuille Excel pour résoudre les sudoku
    Bonjour,

    Voici une petite Macro que j'ai réalisé pour résoudre les Sudoku.
    Pour information, je ne suis pas codeur professionnel, mais plutôt consultant en BI. Je suis donc désolé si mon code ne suit pas l'ensemble des règles d'usages et je serais particulièrement intéressé par toute critique constructive.

    Note: je n'ai testé que sur Excel 2010, mais normalement pas de problème de compatibilité

    Comment cela fonctionne-t-il? Je vous propose de vous expliquer ma démarche:
    (j'éditerai le poste au fur et à mesure pour vous expliquer bien tout en détail si cela intéresse du monde, pour aujourd'hui je donne qu'un rapide aperçu par faute de temps)

    1) Création des fonctions de base

    Au sudoku vous disposez d'une grille de 9 cases sur 9 cases. Notre algorithme va déterminer dans chaque case non rempli un ensemble de valeurs possibles et à chaque itération, en éliminer jusqu'à ce qu'il n'y ai plus qu'une seule valeur

    Pour simplifier le problème, je propose d'utiliser un langage pseudo-binaire pour représenter les valeurs possibles d'une case.
    Une case à une valeur binaire sur 9 caractères. Pour chacun de ces caractères, si la valeur est égale à 1, c'est que le chiffre correspondant à cette position et possible, sinon c'est qu'il est impossible.
    Par exemple,
    Si les chiffres 2 et 4 sont possibles, la valeur de la case sera 000001010
    Si seul le 9 est possible (la valeur est connue), la valeur de la case sera 100000000

    De ce fait, il est très facile de réaliser les fonctions de bases dont nous avons besoin pour réaliser notre sudoku. Voici les fonctions que j'ai écrites:

    - isFinal: teste si la valeur d'une case est déterminée. Autrement dit s'il n'y plus qu'une seule possibilité donc que la valeur contient qu'un seul 1.
    - binaryInverse: pour tout 1 renvoi 0 et pour tout 0 renvoi 1. Par exemple, si l'on entre 1001, la fonction renvoi 0110.

    - keepOnlyCompatible: on lui envoi une case, elle regarde dans une direction (ligne, colonne ou carré) l'ensemble des isFinal et renvoi le binaryInverse.

    - La fonction Fill: effectue des itérations de keepOnlyCompatible jusqu'à ce que le jeux soit bloqué

    2) On est bloqué, forçons!
    Dans la fonction principale, il peut arriver que l'on soit bloqué. Dans ce case, le code va:
    - enregistrer la position actuelle
    - Prendre une solution au hasard, et tester, jusqu'à voir si on tombe sur une incohérence (dans quel cas on revient à la position enregistrée), si l'on résoud le sudoku, ou si l'on est encore bloqué, dans quel cas il faut enregistrer la position et recommencer à prendre une solution au hasard.

    J'espère que mon code vous plaira! Vous trouverez dans le deuxième onglet un sudoku très difficile que mon code résout en environ 30 secondes.

    Bonne journée à vous,

    mrhinn
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/02/2015, 09h16
  2. [XL-2010] Sélectionner plusieurs feuilles Excel pour les imprimer
    Par blepy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/11/2014, 12h06
  3. [XL-2003] Séparer des feuilles excel pour les répartir dans des dossiers
    Par many6976 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 01/07/2013, 10h32
  4. Macro excel pour toutes les feuilles du classeur
    Par duffie34 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 28/03/2013, 12h55
  5. Réponses: 6
    Dernier message: 22/09/2005, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo