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 Perl Discussion :

Générateur de possibilité


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Par défaut Générateur de possibilité
    Bonjour,
    voila j'ai besoin de générer des chaînes de caratère que j'appelle chaînes possible.
    En gros, j'ai trois lettres A,B,C et je veux que perl me sorte ca :
    ABC
    ACB
    BAC
    BCA
    CAB
    CBA.

    Sachant que certaine fois le nombre de lettre ce restreint. Par exemple la chaîne suivante : (A/C)(A/B)CA
    Correspond a : AACA, ABCA, CACA, CBCA.
    Vous voyez ce que je veux dire?

    Le problème c'est que ca fait pas mal de temps que je suis dessus, et je vois pas du tout comment réaliser ca... Si quelqu'un a une piste, merci d'avance!

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    sub all_str {
    	my $first = shift;
    	my $second = shift || return @$first;
    	my @list;
    	for my $a (@$first) {
    		for my $b (@$second) {
    			push @list, $a.$b
    		}
    	}
    	return all_str(\@list, @_) 
    }
    elle s'utilise comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    print join("\n", all_str(
    	['A'..'B'],
    	['A'..'C'],
    	['A', 'C'],
    	['B'],
    ));
    ici pour (A/B)(A/B/C)(A/C)B

    voici aussi une variante plus simple qui te renvoi seulement une des chaines au harard (meme arguments) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sub any_str {
    	join '', map {$_->[rand @$_]} @_
    }

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Par défaut
    Merci de ton aide!

    Entre temps j'ai trouvé un moyen de ne pas avoir besoin de générer tous les résultats (768 dans mon cas :/). Mais ce script reste quand même utile! (je pense en avoir surement besoin par la suite )

    Encore merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. générateur de possibilité de a à 9999n
    Par jack_x4 dans le forum Débuter
    Réponses: 9
    Dernier message: 13/10/2009, 10h51
  2. Recherche d'une possibilite
    Par Invité dans le forum Langage SQL
    Réponses: 8
    Dernier message: 29/01/2004, 23h46
  3. Générateur de doc
    Par chman dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 09/09/2003, 20h37
  4. Les possibilité que C++ offre par rapport à Pascal Objet
    Par Riko dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 01/02/2003, 21h38
  5. quels sont les possibilitées???
    Par lolo-d dans le forum OpenGL
    Réponses: 11
    Dernier message: 16/05/2002, 00h41

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