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

Langage Java Discussion :

Ecrire un solveur de Sudoku simple avec deux méthodes


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut Ecrire un solveur de Sudoku simple avec deux méthodes
    Bonjour, j'ai un problème sur du Sudoku que je dois résoudre, le voici:

    Rédigez le code de la classe SudokuImpl qui descend de la classe abstraite Sudoku.
    La classe SudokuImpl hérite de la propriété values qui contient un tableau bi-dimensionnel représentant une grille de Sudoku.Les lignes et les colonnes sont indexées de 0 à 8 et contiennent les valeurs de la grille.Quand une valeur de la grille est inconnue,elle contient -1.

    Entrez le code des méthodes suivantes:
    solve_a_column( ): analyse une colonne du tableau values et
    complète avec le chiffre manquant s'il ne manque qu'un seul
    chiffre.
    solve_a_row( ): analyse une ligne du tableau values et complète
    avec le chiffre manquant s'il ne manque qu'un seul chiffre.

    S'il y'a plus d'un chiffre manquant dans la ligne ou la colonne,laissez la ligne ou la colonne inchangée.

    Voici le code à compléter:

    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
    abstract class Sudoku {
            protected int[][] values = new int[9][9];
     
            /**
             * Résolvez une colonne donnée (indexée de 1 à 8)
             *  - le tableau values aura préalablement été peuplé - les valeurs manquantes sont représentées par des -1
             *  - S'il manque plus d'une valeur dans la colonne, laissez la colonne inchangée
             *  - Pour cet exercise vous pouvez supposer que l'argument colnum correspond bien à une colonne
             */
            abstract public void solve_a_column( int colnum );
     
            /**
             * Résolvez une ligne donnée (indexée de 1 à 8)
             *  - le tableau values aura préalablement été peuplé - les valeurs manquantes sont représentées par des -1
             *  - S'il manque plus d'une valeur dans la ligne, laissez la ligne inchangée
             *  - Pour cet exercise vous pouvez supposer que l'argument rownum correspond bien à une ligne
             */
            abstract public void solve_a_row( int rownum );
     
            // Le code des autres méthodes a été masqué
            // ...
        }
     
        class SudokuImpl extends Sudoku {
     
                   /*----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
     
            /**** Entrez votre code ici ****/
     
            /*----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
        }
    Voici le code que j'ai complété:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class SudokuImpl extends Sudoku {
            @Override
            public void solve_a_column(int colnum) {
     
            }
     
            @Override
            public void solve_a_row(int rownum) {
     
            }
     
        }
    Par contre, je ne sais pas quoi mettre dans le corps des méthodes solve_a_colnum(int colnum) et
    solve_a_row(int rownum) ?
    Avez vous une idée svp?En fait je ne sais pas comment traduire en langage java,les phrases:

    "analyse une colonne du tableau values et complète avec le chiffre manquant s'il ne manque
    qu'un seul chiffre
    "

    "analyse une ligne du tableau values et complète avec le chiffre manquant s'il ne manque
    qu'un seul chiffre
    "

    Avez_vous une idée svp?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    de la même manière que dans d'autres langages.

    Tu dois découper le problème en une suite de petites étapes très simples, puis une fois que c'est fait les programmer en Java.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut
    Le problème est déjà en suite de petites étapes,le problème
    c'est que je ne sais pas exprimer en code java le fait d'analyser
    une colonne ou une ligne du tableau values et le compléter avec
    le chiffre manquant s'il ne manque qu'un seul chiffre .

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je dirais qu'il te fait d'autres étapes bien plus petites. En fait, aussi petites que d'habitude quand on programme.

    Mais ma foi, si tu n'as pas de problème pour exprimer la solution dans un autre langage que Java, fais donc ça. Puis traduis cette solution en Java. Puis éventuellement nettoie le superflu si nécessaire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut
    finalement , j'ai fait ce code:

    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
    class SudokuImpl extends Sudoku {
     
            public boolean validate() {
                int[][] tableaufinal = new int[0][];
                for (int i = 0; i < tableaufinal.length; i++) {
                    BitSet row = new BitSet(9);
                    BitSet column = new BitSet(9);
     
                    for (int j = 0; j < tableaufinal[i].length; j++) {
                        if (tableaufinal[i][j] == 0 || tableaufinal[j][i] == 0) continue;
                        if (row.get(tableaufinal[i][j] - 1) || column.get(tableaufinal[j][i] - 1))
                            return false;
                        else {
                            row.set(tableaufinal[i][j] - 1);
                            column.set(tableaufinal[j][i] - 1);
                        }
                    }
                }
     
     
     
                return false;
            }
    Qu'est ce que vous en pensez svp?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    ... J'en pense que ça ressemble pas à la question de départ ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre émérite Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 593
    Par défaut
    Citation Envoyé par master MI Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                int[][] tableaufinal = new int[0][];
                for (int i = 0; i < tableaufinal.length; i++) {
                 ...
                   for (int j = 0; j < tableaufinal[i].length; j++) {
    Et donc le contenu de tableaufinal, il vient d'où ?

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/06/2011, 17h13
  2. Réponses: 0
    Dernier message: 18/05/2011, 11h35
  3. Réponses: 1
    Dernier message: 17/08/2008, 13h20
  4. Ecrire un projet Web avec deux langages
    Par rabddoul dans le forum Framework .NET
    Réponses: 3
    Dernier message: 02/03/2007, 16h24
  5. Ecrire dans une CEdit avec deux Couleurs Différentes
    Par yoyothebest dans le forum MFC
    Réponses: 1
    Dernier message: 25/03/2006, 19h09

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