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

C Discussion :

[C] Solver Sudoku


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut [C] Solver Sudoku
    Voilà j'ai un projet à faire : résoudre des sudokus par la méthode du backtracking. J'ai codé les fonctions qui permettent de résoudre un sudoku mais ma fonction resolve ne fonctionne pas correctement. En effet, elle fonctionne très bien pendant un certain temps et malheureusement boucle sur deux case du tableau indéfiniment.
    Je comprend pas du tout pourquoi peut être que vous pouvez m'aider.
    Je vous donne le code source du solver... je pense que vous allez comprendre facilement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef int* sudoku;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    sudoku resolve(sudoku s, sudoku temp) {
        int index=0,value=0;
     
        while(index < 81) {
            index = next(s,index);
            value = value+1;
            printf("\n\n\n1 --> index : %d, value : %d\n",index,value);
            printSudoku(s);
     
            if(existInsert(s,value,index) == true) {
                s[index] = value;
                value = 0;
            }
     
            else if(value == 9) {
                value = 0;
                s[index] = 0;
                index = index-1;
                printf("\n\n\n2 --> index : %d, value : %d\n",index,value);
                printSudoku(s);
                while(isInSudokuBase(temp,index) == true) {
                    index = index-1;
                }
     
                printf("\n\n\n3 --> index : %d, value : %d\n",index,value);
                printSudoku(s);
                if(s[index] < 9) {
                    value = s[index];
                    s[index] = 0;
                    printf("\n\n\n4 --> index : %d, value : %d\n",index,value);
                    printSudoku(s);
                }
            }
        }
        return s;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int main() {
        sudoku s = createSudoku();
        sudoku temp = createSudoku();
        initSudoku(s);
        initSudoku(temp);
     
        fileSudoku(s,temp,"sudoku.txt");
        //test(s,temp);
        printSudoku(resolve(s,temp));
     
        system("pause");
        return 0;
    }
    Si vous avez des doutes sur certaines fonctions n'hesitez pas à me demander

  2. #2
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    J'ai résolu mon affaire --> je l'ai recodé complètement et de façon récursive... et cela fonctionne au poil.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Défi] Le Défi Delphi n°5 : Le Sudoku solver
    Par Franck SORIANO dans le forum Delphi
    Réponses: 505
    Dernier message: 07/02/2010, 14h39

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