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 :

FF


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut FF
    voila ce que j'ai comme fichier:
    pooi 56 sko
    one 1222 moi
    name 156 10
    family 14 1
    pro 15 ADD

    voici le résultat après le tri :
    56 pooi sko
    1222 one moi
    156 name 10
    14 family 1
    15 pro ADD

  2. #2
    Membre confirmé
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Quel est le problème ? Le résultat est conforme à ce que tu veux, non ?

    Bon, c'est vrai que ton script est un peu brouillon, on dirait une version un peu maladroite de la transformée schwartzienne. Je n'aurais pas tout-à-fait procédé ainsi, mais ç'a l'air de marcher.

    Sinon, conseil : utilise la balise CODE (bouton # dans l'interface de post) quand tu poste du code, c'est plus lisible. Indenter n'est pas du luxe non plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    use strict;
    use warnings;
    open (KO,"filename.txt") or die " $!";
    my @tab=<KO>;
    print map{$_ ->[0]}
    	sort{ $a->[1] cmp $b->[1] }
    		map{ [$_,(split /\t/)[2]] } @tab ;
    close(KO);
    There's nothing like $HOME!

  3. #3
    Membre confirmé
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Au temps pour moi, j'avais basé ma réponse sur une ancienne version de ton post. Je suis trop fatigué pour me pencher sur le problème, là.
    There's nothing like $HOME!

  4. #4
    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 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Il est inutile de conserver la ligne d'origine, puisqu'on doit inverser des colonnes. Donc, en s'éloignant un peu de la forme canonique de la transformation de Schwartz, voici un essai à la ligne de commande:

    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
     
    $ perl -e 'use strict;
    > use warnings;
    >
    > my @tab = split /[\r\n]+/,
    > "pooi 56 sko
    > one 1222 moi
    > name 156 10
    > family 14 1
    > pro 15 ADD";
    >
    > print join "\n",
    >    map {join " ", ($_ ->[1], $_->[0], $_->[2])}
    >    sort{ $a->[2] cmp $b->[2] }
    >    map{ [(split /\s/)] } @tab ;
    > '
    14 family 1
    156 name 10
    15 pro ADD
    1222 one moi
    56 pooi sko

  5. #5
    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 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    voici une forme légèrement simplifiée de la même chose:
    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
     
    $ perl -e 'use strict;
    > use warnings;
    > use feature qw(say);
    >
    > my @tab = split /[\r\n]+/,
    > "pooi 56 sko
    > one 1222 moi
    > name 156 10
    > family 14 1
    > pro 15 ADD";
    >
    > print
    >    map {"$_->[1] $_->[0] $_->[2]\n"}
    >    sort{ $a->[2] cmp $b->[2] }
    >    map{ [(split /\s/)] } @tab ;
    > '
    14 family 1
    156 name 10
    15 pro ADD
    1222 one moi
    56 pooi sko

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