Partage
  • Partager sur Facebook
  • Partager sur Twitter

Java - Sudoku Recursivité

    2 mai 2010 à 22:41:35

    Bonjour amis Zéro !
    J'ai un grand besoin de vos savoirs .
    Je dois développer un programme en java qui résout les grilles de sudoku, et la je bloque.
    J'ai essayer une méthode de backtracking et n'ayant pas réussit j'ai voulu me lancer dans la récursivité, et la je bloque encore.

    Ligne de code :
    public Valeur[][] creerGrille(Valeur[][] maGrille){
            int valeurEnCours;
            Valeur uneGrille[][] =  new Valeur[9][9];
            boolean valeurTrouvee;
            
            uneGrille = maGrille;
    
            
            nbGrille++;
            for (int i = 0; i < 9; i++){
                for (int j = 0; j < 9; j++){
                    valeurEnCours = -1;
                    if (uneGrille[i][j].getValeur() == 0){
                        for (int y = 0; y < uneGrille[i][j].getValeursPossible().size() - 1; y++){
                            valeurEnCours = (Integer)uneGrille[i][j].getValeursPossible().get(y);
                            if ((ligne(valeurEnCours, uneGrille, i)) 	||	 (colonne(valeurEnCours, uneGrille, j)) || (miniCarre(getMiniCarre(i, j), valeurEnCours))){
                                valeurTrouvee = false;
                            }
                            else
                            {
                                valeurTrouvee = true;
                                uneGrille[i][j].setValeur(valeurEnCours);
                                creerGrille(uneGrille);
                            }
                            if (valeurTrouvee)
                            return null;
                        }
                    }
                }
            }
    
            System.out.println("Solution numero : " + nbGrille);
            
    
    
            for (int i = 0; i < 9; i++){
                for (int j = 0; j < 9; j++){
                     if (uneGrille[i][j].getValeur() == 0){
                         return null;
                     }
                }
            }
            return (uneGrille);
        }
    

    Et le programme ne remonte jamais quand il s'aperçoit qu'une solution n'es pas la bonne pour passer a une autre.. j'ai du oublier une liste de teste ou autres choses je ne sais plus quoi faire..

    Merci a tous.
    • Partager sur Facebook
    • Partager sur Twitter

    Java - Sudoku Recursivité

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown