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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    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 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    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.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    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 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    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.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    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 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    ... J'en pense que ça ressemble pas à la question de départ ?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    Oui ça ne ressemble pas à la question de départ mais il faut
    que je vérifie les lignes et les colonnes d'abord

  8. #8
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    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 : 592
    Points : 1 681
    Points
    1 681
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    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
             */
    Ok... Un tableau 9 x 9 est des colonnes et lignes de 1 à 8... Mouais... Il ne manque rien là ??
    La définition du Sudoku c'est quoi déjà ?
    On utilise des grilles avec des chiffres de 1 à 8 ou de 1 à 9 ?

    Citation Envoyé par master MI Voir le message
    Qu'est ce que vous en pensez svp?
    Que ça renvoie toujours false ?

    Citation Envoyé par thelvin Voir le message
    ... J'en pense que ça ressemble pas à la question de départ ?
    Très compliqué ; ça ressemble à du code écrit sans algo...

    Citation Envoyé par master MI Voir le message
    Oui ça ne ressemble pas à la question de départ mais il faut que je vérifie les lignes et les colonnes d'abord
    Et donc quel serait l'algorithme ?
    Que faut-il vérifier ? Comment ?

  9. #9
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    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 : 592
    Points : 1 681
    Points
    1 681
    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ù ?

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    Le sudoku va de 1 à 9(il y a une erreur dans l'énoncé car ils ont mis les index de 1 à 8,
    alors que c'est de 0 à 8).
    Ensuite mon tableaufinal , je l'ai déclaré en tant que int et je l'ai initialisé.
    son contenu c'est int[9][9]

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