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 :

Générateur de mots à partir d'un alphabet


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut Générateur de mots à partir d'un alphabet
    Bonjour,
    Dans le but de créer une pile de test pour une classe que j'ai créer, j'essaie de lui soumettre des chaines différentes. Pour cela je voudrais créer un générateur de mot pour un alphabet donner.
    Il prendra en paramètre une chaine représentant l'alphabet, ainsi que la longueur maximal de la chaine.
    Exemple :
    génèrera tous les mot qui peuvent s'écrire avec les lettres a, b et c, et qui n'ont pas plus de 6 caractères de long.
    b, aa, aba, bac, acab, caaaab , sont des exemples de mots qui seront générer par la fonction.
    J'espère avoir bien formuler le problème.
    Merci à vous.

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    ce sujet a déjà été largement traité sur ce forum .
    Regarde tout ce qui est : "générer toutes les combinaisons".
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    Je viens de le faire, mais je malheureusement je ne trouve pas mon bonheur.
    Si tu pouvais me donner le lien direct ca serait parfait.
    Merci

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Code python : 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
    # -*- coding: cp1252 -*-
    #générer tous les mots d'au plus 6 caractères de l'alphabet'abc' 
     
    def power(n,F):
        """mots de longeur n exactement de l'alphabet F"""
        G=[[]]
        for i in range (0,n):
            G= [y+[x] for y in G for x in F]
        return G
     
    def main():
        """Tous les mots de longueur <=6"""
        F=['a','b','c']
        print [m  for n in range(0,7) for m in power(n,F)]
     
    if __name__ == '__main__':
        main()
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  5. #5
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    Merci Zavonen, mais je ne comprend rien à Python. Un code mnémonique peut être?
    Merci

  6. #6
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Bien, les mots de longueur n correspondent exactement aux applications de l'ensemble {1;2; ..;n} dans l'ensemble {a;b;c;}
    http://gilles-dubois.developpez.com/...ons/index.html
    Donc aux suites de la forme:
    x_1x_2....x_n où pour chaque i, x_i est dans {a;b;c}. Leur nombre est donc 3^n.
    Pour les générer tu procèdes récursivement.
    Supposons que tu disposes de la liste des mots de longueur n-1. Il te suffit de les reprendre tous et de mettre devant successivement a,puis b, puis c
    Au début tu n'as qu'un mot de longueur 0: le mot vide
    pour n=1 tu as trois mots a,b,c
    pour n=2, aa,ab,ac,ba,bb,bc,ca,cb,cc
    et ainsi de suite.
    c'est ce que fait ma fonction 'power' (pour puissance)
    Par la suite il suffit de rassembler les mots de longueur 0,1,2, ...,6
    Est-ce plus clair ?
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    il y a une nouvelle de Julio Cortazar (très bon bouquin d'ailleurs) qui parle d'une biblothèque faites d'une finitié de cellules hexagonales, comprenant 2 portes sur 2 côtés opposés donnant sur des cellules identiques (nid d'abeilles). Sur chacun des 4 autres côtés figurent 3 étagères, sur chacune des étagères 32 bouquins.

    Chaque bouquin est généré par un tirgae au sort des lettres de l'alphabet (plus les ponctuations).

    La biblothèque représente tout ce qui a jamais et pourra être écrit par l'Humain
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  8. #8
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Ha bon, et il faut pousser combien de portes avant d'avoir la chance de pouvoir lire 4 × 3 × 32 bouquins intelligibles de bout en bout ?
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

Discussions similaires

  1. 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
  2. extraire des mots à partir d'une chaine
    Par freestyler dans le forum Delphi
    Réponses: 5
    Dernier message: 28/09/2006, 15h04
  3. générateur de mot de passe
    Par zais_ethael dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 18/05/2006, 15h47
  4. Générateur de mot de passe
    Par christel1982 dans le forum ASP
    Réponses: 2
    Dernier message: 16/11/2005, 12h25
  5. [MySQL] Générateur d'interface à partir de table sql ?
    Par Pumpkins dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 14/11/2005, 12h13

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