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

avec Java Discussion :

Algorithme complexe mots cachés java


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Algorithme complexe mots cachés java
    Bonjour j'ai beau chercher partout mais je ne comprend toujours pas comment je dois faire pour trouver mon intrus.
    je vous mets en contexte, jai un fichier en lecture: grille.txt avec plein de lettres par exemple:
    Btfyoaxoz
    uoedjslcd
    sonaflrsS
    xaljacpyg
    vklroMzcf
    adeuuuote
    kDcxtoruh
    aoeahktlk
    uquczbisu
    J'ai aussi un autre fichier en lecture mots.txt avec des mots:
    allo
    bonjour
    pinoTTe
    salut
    couCou
    tourlou
    courge
    Ce que je dois faire est de trouver les mots de mon fichier mots.txt dans ma grille.txt les mots qui ne seront pas trouver vont aller dans un autre fichier intrus.txt que je vais devoir créer.
    Dans ce cas par exemple les deux mots intrus sont pinotte et courge. Mon problème n'est pas de comment lire les fichiers et les transformer en matrice de caractères mais comment faire pour trouver les mots en diagonale dans les 4 sens possibles. Genre comment je fais pour dire a mon programme qu'il doit trouver allo en diagonale etc. Merci pour votre aide!

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour,

    Plein de façon de faire,
    La première qui me vient à l'idée, basique certes ...
    =>
    Un tableau t(i,j) avec i lignes et j colonnes
    Je cherche allo dans t(i,j) ... je pars de la 1ère ligne si je trouve un a en t(x,y) je cherche maintenant un l (donc al ... )
    autour de la position t(x-1,y), t(x+1,y), t(x-1,y-1) etc. bref de 3 à 8 positions max possibles selon qu'on est dans le 1ère ligne, la dernière, en 1ère colonne, en dernière ...
    Si je trouve par exemple un l en t(x-1,y-1) alors je tente de trouver le l suivant (all) en (x-2,y-2) et si c'est ok je poursuis dans la direction etc.

    Maintenant il y a sans doute moyen de faire du récursif dans ce genre de problème ...

    Mais , bon ça fait une réponse ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Est ce que ceci doit être fait dans une classe?

  4. #4
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Je répondais sur la partie algorithme

    En ce qui concerne Java ... je ne pratique pas la programmation objet ...
    De ce que je connais, dans une méthode de classe sans doute ...
    Mais bon il y a bien des pratiquants Java sur ce forum qui se feront un plaisir d'aider ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Mais honnêtement ça me reste tout de même assez compliqué de visualiser la situation. Mais merci quand même

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Mais serait-il possible que tu montres par un exemple?

    En ce moment mon programme n'a que sa ce qui est difficile pour moi et de chercher les mots en diagonale. Jai aucune iddée par où commencer pour faire ceci
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     package tp1mts;
     
    import java.io.*;
    import java.util.Scanner;
     
    public class Tp1Mts {
     
        public static void main(String[] args) {
     
            affichageFg();
     
        }
     
        static void affichageFg() {// Affichage du fichier Fg sans espaces,accents ou symboles
            try {
                BufferedReader grille = new BufferedReader(new FileReader("grille.txt"));
                String ligneA;
                int nbLignes = 0;
                ligneA = grille.readLine();
                while (ligneA != null) {
                    ligneA = grille.readLine();
                    nbLignes++;
                }
                System.out.println("Rappel il y a " + nbLignes + " ligne(s) dans votre fichier grille");
                grille.close();
                grille = new BufferedReader(new FileReader("grille.txt"));
                String[] tabA = new String[nbLignes];
                for (int i = 0; i < tabA.length; i++) {
                    tabA[i] = grille.readLine();
     
                }
                System.out.println("Voici le contenu de votre grille.txt: ");
                for (String a : tabA) {
     
                    System.out.println(a.trim().toLowerCase().replaceAll("[-+.^:,/~!@#$%$%^&*()_]", ""));
     
                }
     
            } catch (FileNotFoundException ex) {
                System.out.println("Je ne trouve pas le fichier");
     
            } catch (IOException e) {
                System.out.println("Je trouve une erreur dans ton fichier IOException");
            }
            affichageFm();// debut de lexecution mots.txt
     
        }
     
        static void affichageFm() {
            try {
                BufferedReader mots = new BufferedReader(new FileReader("mots.txt"));
                String ligneB;
                int nbLignesB = 0;
                ligneB = mots.readLine();
                while (ligneB != null) {
                    ligneB = mots.readLine();
                    nbLignesB++;
                }
                System.out.println("Rappel il y a " + nbLignesB + " ligne(s) dans votre fichier mots");
                mots.close();
                mots = new BufferedReader(new FileReader("mots.txt"));
                String[] tabB = new String[nbLignesB];
                for (int i = 0; i < tabB.length; i++) {
                    tabB[i] = mots.readLine();
     
                }
                System.out.println("Voici le contenu de votre mots.txt: ");
                for (String b : tabB) {
     
                    System.out.println(b.trim().toLowerCase().replaceAll("[-+.^:,/~!@#$%$%^&*()_]", ""));
     
                }
     
            } catch (FileNotFoundException ex) {
                System.out.println("Je ne trouve pas le fichier");
     
            } catch (IOException e) {
                System.out.println("Je trouve une erreur dans ton fichier IOException");
            }
            affichageExec();// affichage des demarches
     
        }
     
        static void affichageExec() {// affichage lors de lexecution
            System.out.println("Démarrage");
            System.out.println("");
            System.out.println("Chargement de la grille…ok");
            System.out.println("");
            System.out.println("Chargement de la liste de mots…ok");
            System.out.println("");
            System.out.println("Validation de la liste de mots…ok");
            System.out.println("");
            System.out.println("Recherche des intrus…ok");
            System.out.println("");
            System.out.println("Les intrus trouvés sont dans le fichier intrus.txt et vonts aparaitre ici:");
            System.out.println("");
            System.out.println("Traitement terminé.");
            FinExec();// demande d'arret du programme
        }
     
        static void FinExec() {//Demander a l'utilisateur s'il veut recommencer
            Scanner clavier = new Scanner(System.in);
     
            System.out.println("Voulez vous recommnecer l'execution du programme?(oui ou non)");
            boolean refus;
            String decision1;
            char decision_1;
            decision1 = clavier.nextLine().toLowerCase();
            decision_1 = decision1.charAt(0);
            switch (decision1) {
                case "non":
                    System.out.println("Le programme s'arrête");
                    System.exit(0);
                case "oui":
                    System.out.println("");
                    System.out.println("Le programme recommence------>");
                    System.out.println("");
                    affichageFg();
                    refus = true;
                    break;
                default:
                    System.out.println("Erreur, fin du programme");
                    break;
            }
     
        }
    }

  7. #7
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 269
    Points : 434
    Points
    434
    Par défaut
    Bonjour,

    je pense que l'approche de lire le fichier texte ligne par ligne n'est pas la bonne car comme tu le dis tu as des mots en diagonales ou en vertical.
    Comme tu dis plus, une bonne approche (parmi d'autres j'imagines) serait de créer un tableau à 2 dimensions et de le remplir avec les différents caractères de ton fichier source.
    Ainsi tu auras la possibilité de la parcourir horizontalement, verticalement ou en diagonale avec les bons index.

Discussions similaires

  1. un algorithme pour mot de passe
    Par tsrsi2006 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 26/02/2009, 17h36
  2. [débutant] fichiers dans le cache Java
    Par SPACHFR dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 06/02/2009, 17h20
  3. Algorithmes de compression en java
    Par ramoths dans le forum Débuter
    Réponses: 0
    Dernier message: 15/11/2008, 23h04
  4. Algorithme combinaisons mots à partir de lettres
    Par micfont999 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 16/01/2007, 00h53

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