Formater des données - Perl - Programmation
Marsh Posté le 09-06-2010 à 23:36:02
Bonjour,
Le nombre de lignes et de colonnes de tes fichiers est il toujours le même, ou bien est-ce variable, et en ce cas, les valeurs moyennes de ces nombres tournent autour de combien?
A+,
Marsh Posté le 10-06-2010 à 09:44:39
Bonjour,
C'est variable je peux par exemple avoir 8 lignes c'est rarement plus mais je peux avoir 200 colonnes.
Merci
Marsh Posté le 10-06-2010 à 14:58:00
OK, bon ben je vais regarder ça.
Il y a peut être moyen de faire ça via la librairie PDL de perl, mais comme je ne connais pas bien cette librairie, je vais regarder directement.
A+,
Marsh Posté le 11-06-2010 à 11:16:10
chandlerbing87 a écrit : Bonjour, je débute en programmation perl et voila mon problème je possède un grand nombre de fichiers qui sont de cette forme : 4344222 Et pour chaque colonne je dois remplacer le chiffre majeur par 1 et par 2 le mineur ce qui donne ça à la fin : 1212112 Quand il y a égalité ou que le caractère est le même il suffit de mettre 1 par defaut. Pourriez vous m'aider ? Merci d'avance |
sauf que le tableau résultat que tu donnes est faux, rien que pour la 2e colonne, 3 etant le chiffre majeur, on devrait avoir 1 en tête de colonne et non 2. etc.
Un exemple qui devrait marcher:
Code :
|
On fait une première passe et on range le min et max de chaque colonne dans un tableau, puis on fait une seconde passe, et on substitue par 1 ou 2 si nécessaire.
A+,
Marsh Posté le 11-06-2010 à 13:57:10
Merci beaucoup pour ton script c'est vraiment top. J'ai lu que tu me disais que mon résultat était faux en fait je me suis mal exprimé ce que j'entendais pas caractère majoritaire c'était juste le caractère qui était le plus présent dans une colonne, c'est à dire si 1 est présent 3 fois et 4 présent 1 fois le caractère majoritaire est 1 et le minoritaire est 4. En clair je parlais du nombre d'occurence et non de la valeur propre.
Merci vraiment beaucoup
Marsh Posté le 11-06-2010 à 14:19:29
OK! dans ce cas la, il faut changer complètement de qui est fait dans la première passe.
Je vais y jeter un œil.
A+,
Marsh Posté le 11-06-2010 à 15:06:28
Code :
|
La en sortie sur ton exemple, ca donne la même chose que pour ton post initial.
C'était juste un peu plus complexe:
En phase 1, on a un tableau qui pour chaque colonne, a un hash qui a chaque chiffre associe son nombre d'occurrences.
Une fois cela fait, on calcule pour chaque colonne l'occurrence min et max et on en fait deux tableaux.
En phase 2, pour un chiffre, on compare son occurence avec l'occurence maximale dans la colonne, si c'est la même, on remplace par 1, etc.
A+,
Marsh Posté le 01-07-2010 à 10:04:14
J'ai encore besoin de ton aide gilou.
En fait au lieu de mettre 1 par défaut quand il y a autant de max que de min, il faudrait mettre 1 pour le max et 2 pour le min même si il y a égalité.
En fait si on a :
4
3
4
3
avoir :
1 ou 2
2 1
1 2
2 1
Merci d'avance
Marsh Posté le 01-07-2010 à 13:46:02
Mais tu fais quoi avec le cas suivant:
5
4
3
5
4
3
??
A+,
Marsh Posté le 01-07-2010 à 14:07:54
En fait je peux pas avoir plus de 2 caractères différents.
Marsh Posté le 01-07-2010 à 16:26:14
A priori, ceci devrait coller
Code :
|
Il y a probablement plus simple, mais faut pas trop en demander par 32 degrés à l'ombre.
A+,
Marsh Posté le 09-07-2010 à 10:18:58
Pardonne moi pour cette réponse tardive, mais merci beaucoup !!!!
Marsh Posté le 09-06-2010 à 19:49:46
Bonjour,
je débute en programmation perl et voila mon problème je possède un grand nombre de fichiers qui sont de cette forme :
4344222
2141221
4121221
Et pour chaque colonne je dois remplacer le chiffre majeur par 1 et par 2 le mineur ce qui donne ça à la fin :
1212112
2111111
1121111
Quand il y a égalité ou que le caractère est le même il suffit de mettre 1 par defaut.
Pourriez vous m'aider ?
Merci d'avance