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 :

Table de correspondance


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut Table de correspondance
    Bonjour,

    je souhaiterai faire un programme qui renvoie à une tale de correspondance.

    Par example :

    A,J => 1
    B,K,S=>2
    C,L,T=>3
    D,M,U=>4
    E,N,V=>5

    Pour aprés pouvoir transposer cette table de corresponande à ma variable $var2.

    Par exemple :
    My $var2=45A69M

    Au final, je prends chaque caractere de ma variable et si je recontre une lettre comme A, je la remplace par rapport à la valeur de ma table de correspondance.
    soit $var2=451694
    Le A et le M ont été remplacé par la valeur numérique 1 et 4.

    Je pensais mettre en place une table de hachage, mais je n'ai trop d'idées sur sa contrusction.

    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Oui, tu peux construire un hash, par exemple comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my %transco = ( 
         A => 1,
         J => 1,
         B => 2,
         K => 2,
         # etc.
    )
    Ensuite, il suffit de splitter la variable en entrée et d'effectuer les substitutions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my $var2 = "45A69M";
    my @letters = split //, $var2;
    my @letters_out = map { $_ = $transco{$_} if defined $transco{$_}; $_} @letters;
    my $result = join "",  @letters;
    (On peut faire plus concis et se passer des variables intermédiaires, par exemple en faisant pour les lignes 2 et 3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @letters_out = map { $_ = $transco{$_} if defined $transco{$_}; $_} split //, $var2;
    De même pour le join. Mais peu importe, car on peut faire mieux.)


    Il y a en fait bien plus simple, la fonction tr//:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $var2 = "45A69M";
    $var2 =~tr/AJBKSCLTDMUENV/11222333444555/;
    print $var2; # imprime "451694"

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    Merci pour ta réponse. La fonction tr est encore plus simple à mettre en oeuvre.

    Merci

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/03/2007, 21h04
  2. create table as :correspondance de syntaxe avec oracle
    Par slausseur dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2007, 11h34
  3. requête table de correspondance
    Par RodEpsi dans le forum Access
    Réponses: 4
    Dernier message: 19/02/2007, 21h06
  4. Requete avec une table de correspondance.
    Par gregb34 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/02/2007, 19h53
  5. Datawarehouse et table de correspondance
    Par Adi81 dans le forum Alimentation
    Réponses: 4
    Dernier message: 31/05/2005, 19h39

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