effacer répétitions dans une liste [perl] - Perl - Programmation
Marsh Posté le 07-04-2006 à 15:35:13
Le mieux c'est de rentrer tes éléments dans un hâchage :
Exemple rapide :
#! /usr/bin/perl |
Marsh Posté le 07-04-2006 à 15:45:35
D'ailleurs c'est dans la doc
http://www.perl.com/doc/FAQs/FAQ/oldfaq-html/Q5.4.html
Marsh Posté le 07-04-2006 à 15:51:05
Ah ouais, j'aime bien leur solution avec grep, j'y pense jamais à cette commande.
J'adore PERL pour ça, y a toujours dix façons de résoudre un même problème.
En reprenant mon exemple avec la solution qu'ils donnent dans la perldoc, ça donne :
|
EDIT : par contre je connaissais pas cette façon d'initialiser un hash directement avec un tableau de clefs
Marsh Posté le 07-04-2006 à 16:04:19
Elmoricq a écrit : J'adore PERL pour ça, y a toujours dix façons de résoudre un même problème. |
Citation : There's more than one way to do it ! |
Marsh Posté le 07-04-2006 à 16:23:55
merci les gars !
je vais essayer ca lundi matin, là c'est le week end pour moi !! :-)
ciao
Marsh Posté le 07-04-2006 à 16:25:31
fiftoman a écrit : merci les gars ! |
Fonctionnaire !
Marsh Posté le 07-04-2006 à 16:27:51
La le code je le trouve quand même un peu "hardcode", la ligne qu'il faut relire 3 fois avant de la comprendre... Et c'est ce que j'aime pas en perl, pour peu que le dev d'avant adore ce genre de chose, on se retrouve vite avec des lignes incompréhensibles...
D'ailleurs tu aurais pu faire pire encore:
Code :
|
Marsh Posté le 07-04-2006 à 16:37:54
Ca manque de regexp pour rendre le truc vraiment illisible
Marsh Posté le 10-04-2006 à 09:42:29
ReplyMarsh Posté le 12-04-2006 à 14:47:00
J'ai une autre question concernant les tris en perl svp:
J'ai ce fichier texte:
#x y
1 5
44 2
3 74
2 11
Et en fait, j'aimerais le transformer en un nouveau fichier texte ou les x sont triés par ordre croissant:
donc le nouveau fichier texte serait:
#x y
1 5
2 11
3 74
44 2
Vous savez comment on peut faire ca svp?
merci.
Marsh Posté le 12-04-2006 à 14:56:41
le plus simple est de lire ton fichier dans une hash_map (clé x ; valeur y) Ensuite, tu tries les clés de ta map et tu affiches.
Marsh Posté le 12-04-2006 à 15:04:01
t'as juste a adapter un peu le code fourni plus haut ...
T'es en ou pour l'instant, tu as essayé quoi?
Spoiler : feignant... |
Marsh Posté le 12-04-2006 à 15:23:08
ben en fait, comme je maitrise pas perl, et que je connais pas bien les hashages, j'ai mis chaque ligne de mon fichier dans une liste.
MAis le probleme c'est que les elements de la liste sont les lignes entieres et pas juste les x.
Sinon j'ai pas compris ce qui avait été fait plus haut. J'avais juste appliqué betement.. Donc pour adapter ..hum hum...
Enfin, merci quand même !
Miguel
Marsh Posté le 15-04-2006 à 00:56:19
Salut,
Code :
|
le résultat
Code :
|
lami20j
Marsh Posté le 07-04-2006 à 15:27:25
Bonjour,
j'aimerais effacer les éléments (de type nombre) d'une liste qui se repetent en perl, et les ordonner.
C'est à dire que si ma liste est par exemple:
12 33 33 33 77 45 77 24 21
j'aimerais qu'elle devienne
12 21 24 33 45 77
C'est À dire que les deux 33 en trop ont dégagés ainsi que le 77 en trop. Et la liste est triée du plus petit au plus grand.
Qqn peut me donner une idée ?
merci.