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

Algorithmes et structures de données Discussion :

Combinaisons de lettres


Sujet :

Algorithmes et structures de données

  1. #21
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    Tu disais :
    Si l'entrée est composée de 6 lettres différentes, et donc une double, il y a moins de 21 entrées de 5 lettres :
    Pour EEINRST, on a (Liste n°2) EEINR EEINS EEINT EEIRS EEIRT EEIST EENRS EENRT EENST EERST EINRS EINRT EINST EIRST ENRST INRST et c'est tout.
    À part en éliminant les doublons dans une boucle je me demandais si tu avais trouvé ça directement par combinaisons?
    Flodelarab : J'ai tout compris excepté le "faire..." Je comprends plus ou moins ce que tu veux dire mais je ne parviens pas à le mettre en musique.
    Sinon j'ai toutes les combinaisons et là je vais essayer de les additionner.

  2. #22
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 241
    Par défaut
    Partant de EEINRST, on a une lettre en double, et 5 simples.
    On va faire 3 traitements consécutifs.
    - Tous les mots avec 2 E, et donc 3 lettres à choisir parmi les 5 autres. 10 mots en tout.
    - Tous les mots avec 1 seul E, et donc 4 lettres à choisir parmi les 5 autres. 5 mots en tout.
    - Tous les mots avec aucun E, et donc 5 lettres à choisir parmi les 5 autres. 1 seul mot.

    Ou bien, on recherche tous les mots (21 mots), et on lance une procédure 'Supprime-Doublons()'. Je pense qu'une telle procédure existe parmi les milliers de fonctions Python qui existent.

    Ou encore, je crois que la notion de dictionnaire permet de faire ceci : tu crées tes 21 mots, tu les ajoutes dans un dictionnaire, et de lui-même, si tu ajoutes 2 fois le même mot, le système ne garde qu'un mot.
    A vérifier bien sûr.

  3. #23
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    Comme tu n'as pas réagi à la réponse cachée, je ne sais pas si tu l'as lue. Je vais traduire le programme.

    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
    Pour chaque mot du dictionnaire qui fait 7 lettres :
        détruire le tableau t des motifs contenus dans le mot.
        détruire le tableau l des quantités de lettres.
        mettre le motif vide dans le tableau des motifs.
     
        Pour chaque lettre du mot :
            Incrémenter la quantité de la lettre dans le tableau l.
     
         Pour chaque lettre A présente dans l :
             Pour chaque quantité de cette lettre :
                Pour chaque motif m de t :
                    Incrémenter dans le tableau des motifs, la quantité de la concaténation de m et A.
     
        Pour chaque motif :
            Si la longueur est 5 :
                Incrémenter la valeur du motif dans le tableau s des solutions.
     
    A la fin :
        Pour chaque motif du tableau des solutions :
            Si la quantité du motif est supérieure à la quantité de max :
                Affecter motif à max  
        Afficher le motif max et la quantité de ce motif.

  4. #24
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    A y est merci mille fois TCB!
    J'ai supprimé les doublons finalement.
    Le temps total d'exécution en partant des mots de 7 lettres déjà classées alphabétiquement est d'environ 9 s et encore j'ai fait le programme en RealBasic (Xojo) mais en Delphi ça devrait tourner autour de la seconde.
    Il y aurait moyen d'optimiser encore mais comme ce n'est pas le genre de truc qu'on utilise tous les jours ce sera bon comme ça.
    Le tiercé gagnant est donc :
    AEIRS : 748
    AEIRT : 670
    AERST : 570
    Flodelarab,
    Excuse-moi je n'ai pas vu ta réponse cachée. En effet ta solution semble intéressante, je vais la développer pour la comparer à celle de TCB.
    Mercie encore à tous.

  5. #25
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    Honte sur moi. J'ai négligé l'ordre des lettres. Mon résultat est faux. Il faut prendre les lettres dans l'ordre alphabétique et non dans un ordre aléatoire.

    aeirs 727
    aeirt 654
    aerst 548
    aesti 517

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk -F '' '/^.{7}$/{delete l; delete t;t[""]++;for (i=1;i<=7;i++) l[$i]++; for (i=1;i<=26;i++) {A=sprintf("%c",i+64); for (j=1;j<=l[A];j++) for (m in t) t[m""A]++;} for (m in t) if (length(m)==5) s[m]++;} END{for (m in s) if (s[m]>s[max]) max=m; print max, s[max];}' mondico
    AEIRS 727
    Voilà plus sérieux. Et plus juste.

  6. #26
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    Tu me rassures, je ne suis pas le seul à me planter
    Un moment de honte est vite passé sinon je ne poserais plus de questions ici.
    Ton résultat était ou est 727?
    Car le top est 748.

  7. #27
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    Saurais-tu fournir la liste ? Moi, j'ai la liste des 727 mots et je suis sûr qu'elle est juste.
    L'échappatoire que je vois est que nous n'avons pas le même dictionnaire. Si le tien est très récent, c'est possible. 2 nouveaux verbes conjugués font la différence.

  8. #28
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    Oups au temps pour moi tu as dû partir de l'OS7.
    Nous en sommes à l'ODS8.
    Je n'ai pas pu joindre le fichier brut en format txt, j'espère que ça aura marché en fichier compressé "rar".
    Bien à toi.
    Fichiers attachés Fichiers attachés

  9. #29
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    J'avais l'ODS5. Dorénavant, nous sommes d'accord. Et les 21 mots qui manquaient ? À la demande générale :

    BASSIER
    FRESIAS
    LARIDES
    LATRIES
    LIKERAS
    NASRIDE
    RACISEE
    RACISES
    RASIERE
    ROADIES
    SADISER
    SEXERAI
    SIDECAR
    SIGNARE
    SPITERA
    SPRAIES
    TARIERS
    TISERAI
    TISERAS
    UBERISA
    ZARBIES
    

  10. #30
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    Je n'oserais pas dire que les grands esprits se rencontrent car je n'ai été qu'aidé mais bravo à toi car je n'ai pas encore compris complètement ton raisonnement, je le creuse.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. combinaison de lettres
    Par memedplay dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 10/12/2012, 20h11
  2. [RegEx] combinaison de lettre.
    Par lequebecois79 dans le forum Langage
    Réponses: 3
    Dernier message: 01/02/2012, 23h39
  3. Algorithme de combinaison de lettres
    Par Puma24 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 26/01/2009, 18h55
  4. combinaison de lettres
    Par papoulouis dans le forum VB 6 et antérieur
    Réponses: 22
    Dernier message: 25/10/2008, 18h38
  5. [Tableaux] toute combinaison de lettres possible
    Par olkabil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2008, 16h50

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