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

Python Discussion :

Sudoku - Récursivité - Nombre de solutions pour une grille


Sujet :

Python

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 26
    Points : 19
    Points
    19
    Par défaut Sudoku - Récursivité - Nombre de solutions pour une grille
    Ci joint une fonction Python récursive qui donne une solution pour une grille de Sudoku.
    Cette fonction peut être améliorée, mais là n'est pas le propos.

    Le programme s'arrête après avoir trouvé une solution.
    Je souhaite :
    - compter le nombre de solutions ;
    - conserver chaque solution s'il y en a plusieurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def PositionValide(position):
        if position == 81:
            return True
        ligne = position // 9
        colonne = position % 9
        if (Grille[ligne][colonne]) != 0:
            return PositionValide(position + 1)
        for nombre in range(0, 10):
            if absentDeCase(Grille, nombre, ligne, colonne):
                Grille[ligne][colonne] = nombre
                if PositionValide(position + 1):
                    return True
        Grille[ligne][colonne] = 0
        return False
    Des idées ? Merci

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Arbraz Voir le message
    Des idées ?
    Bonjour
    Tout d'abord il ne faut pas que ta fonction s'arrête dès qu'elle est en position 81 (ok, tout le monde a bien compris que "position=81" signifie que tu as trouvé la 81° case donc que t'as rempli ta grille) mais que justement là elle incrémente un compteur et mémorise la position courante. Puis elle remonte à l'étape précédente et repart explorer une autre branche.
    Bien entendu le tableau des positions à mémoriser et le compteur seront transmis d'appel en appel (encore que le compteur ait peu d'intérêt puisqu'il correspond au nombre de positions mémorisées).

    Maintenant question utilité je pense que c'est faible. Parce que si tu pars d'une grille avec des nombres déjà placés alors généralement il n'y a qu'une solution (et dans ce cas en plus ton test position == 81 ne pourra pas être vrai donc tu ne la trouveras pas) et si tu pars d'une grille vide alors le nombre de solutions est connu (il est assez grand mais il reste fixé et invariant).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 24
    Dernier message: 20/03/2014, 14h16
  2. nombre d'instance pour une base
    Par awatif dans le forum Oracle
    Réponses: 2
    Dernier message: 08/08/2007, 19h16
  3. Repérer un nombre de cases dans une grille
    Par timtim2007 dans le forum Prolog
    Réponses: 3
    Dernier message: 18/05/2007, 18h42
  4. [C++]Quelles solutions pour une impression propre
    Par Pfeffer dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/01/2007, 09h45
  5. Nombre de lignes pour une application ?
    Par BoeufBrocoli dans le forum Windows
    Réponses: 5
    Dernier message: 21/01/2006, 15h48

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