Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1073 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Trouver la plus grande et la plus petite valeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Trouver la plus grande et la plus petite valeur

n°714479
burgergold
5$? va chez l'diable!
Posté le 03-05-2004 à 17:22:30  profilanswer
 

J'ai le code immonde (selon moi) qui me permet de trouver la plus petite et la plus grande valeur de mon objet
 

Code :
  1. foreach (@_) {
  2.     if ($_->total > $yAxisEnd) {
  3.       $yAxisEnd = $_->total;
  4.     }
  5.     if ($_->allowed > $yAxisEnd) {
  6.       $yAxisEnd = $_->allowed;
  7.     }
  8.     if ($_->used > $yAxisEnd) {
  9.       $yAxisEnd = $_->used;
  10.     }
  11.     if ($_->target_used > $yAxisEnd) {
  12.       $yAxisEnd = $_->target_used;
  13.     }
  14.     if ($_->limit > $yAxisEnd) {
  15.       $yAxisEnd = $_->limit;
  16.     }
  17.     if ($parameter{"projection"} && $_->projection_used > $yAxisEnd) {
  18.       $yAxisEnd = $_->projection_used;
  19.     }
  20.     if ($_->total && $_->total < $yAxisStart) {
  21.       $yAxisStart = $_->total;
  22.     }
  23.     if ($_->allowed && $_->allowed < $yAxisStart) {
  24.       $yAxisEnd = $_->allowed;
  25.     }
  26.     if ($_->used && $_->used < $yAxisStart) {
  27.       $yAxisStart = $_->used;
  28.     }
  29.     if ($_->target_used && $_->target_used < $yAxisStart) {
  30.       $yAxisStart = $_->target_used;
  31.     }
  32.     if ($_->limit && $_->limit < $yAxisStart) {
  33.       $yAxisStart = $_->limit;
  34.     }
  35.     if ($parameter{"projection"} && $_->projection_used && $_->projection_used < $yAxisStart) {
  36.       $yAxisStart = $_->projection_used;
  37.     }
  38.   }


 
bien entendu, je cherche un moyen efficace pour réduire ca le plus possible et que ca reste clair
 
si quelqu'un a une idée, merci

mood
Publicité
Posté le 03-05-2004 à 17:22:30  profilanswer
 

n°714506
pospos
Posté le 03-05-2004 à 17:44:17  profilanswer
 

deja si tu pouvais acceder directement à la hash au lieu de passer par des methodes ca accelererait beaucoup la chose
 
sinon tu peux deja faire un truc genre
 
$max_local = max($_->bidule, $_->truc, $_->machin);
$max = $max_local if $max < $max_local;

n°714512
anapajari
s/travail/glanding on hfr/gs;
Posté le 03-05-2004 à 17:54:53  profilanswer
 

en faisant deux sorts sur @_ ( un pour le max et un pour le min) et en prenant le 1er element remonté ???


Message édité par anapajari le 03-05-2004 à 17:55:15
n°714532
burgergold
5$? va chez l'diable!
Posté le 03-05-2004 à 18:32:46  profilanswer
 

anapajari a écrit :

en faisant deux sorts sur @_ ( un pour le max et un pour le min) et en prenant le 1er element remonté ???


 
ouais c'est la solution que j'ai pensé ce midi (12hrs30 ici présentement)
 
j'allais testé justement


Message édité par burgergold le 03-05-2004 à 18:33:47
n°714540
burgergold
5$? va chez l'diable!
Posté le 03-05-2004 à 18:38:47  profilanswer
 

anapajari a écrit :

en faisant deux sorts sur @_ ( un pour le max et un pour le min) et en prenant le 1er element remonté ???


 
ah en fait, @_ contient des objets, pas des valeurs brutes

n°714550
burgergold
5$? va chez l'diable!
Posté le 03-05-2004 à 18:47:02  profilanswer
 

le sort semble pas fonctionner
 
j'ai tenté un truc du genre :D
 

Code :
  1. my @array1 = qw(2 3 4 5);
  2. my @array2 = qw(6 7 8 9 10);
  3. my @array3 = qw(1 7 8 9 10);
  4. print ((sort {$a cmp ((sort ($a cmp $b) @array2)[0])} @array1)[0]);


 
 
ta fonction max tu la prends ou? je l'ai pas par défaut, faut surement que je load un module quelconque non?


Message édité par burgergold le 03-05-2004 à 18:51:26
n°714652
anapajari
s/travail/glanding on hfr/gs;
Posté le 03-05-2004 à 20:41:15  profilanswer
 

Burgergold a écrit :

ah en fait, @_ contient des objets, pas des valeurs brutes


et alors?
tu déclares un sort dans ce gout la

Code :
  1. sub mysort {
  2.           $a->letrucacomparer <=> $b->letrucacomparer;
  3.   }


et derriere tu fais

Code :
  1. foreach( sort mysort @_ )


 
[edit: en fait je viens de comprendre que tu ne veux pas la plus grande et la plus petite valeur de tous tes objets mais que tu veux la plus grande valeur et la plus petite valeur de chaque objet... donc je sors :D]


Message édité par anapajari le 03-05-2004 à 20:44:58
n°714855
burgergold
5$? va chez l'diable!
Posté le 04-05-2004 à 02:12:02  profilanswer
 

anapajari a écrit :

et alors?
tu déclares un sort dans ce gout la

Code :
  1. sub mysort {
  2.           $a->letrucacomparer <=> $b->letrucacomparer;
  3.   }


et derriere tu fais

Code :
  1. foreach( sort mysort @_ )


 
[edit: en fait je viens de comprendre que tu ne veux pas la plus grande et la plus petite valeur de tous tes objets mais que tu veux la plus grande valeur et la plus petite valeur de chaque objet... donc je sors :D]


 
ouais mais mon sort mysort doit pas m'en vérifier que 2 mais environ 5, et jdois pas prendre les valeurs nulles :D
 
donc ca me donnera surment une fonction et non réellement une manière "plus rapide" de le faire, right?


---------------
http://www.boincstats.com/signature/user_664861.gif
n°715156
burgergold
5$? va chez l'diable!
Posté le 04-05-2004 à 12:17:49  profilanswer
 

up
 
et justement dans mysort, comment jvais faire pour plugger toutes les comparaisons et que sort sachent quoi faire :D


---------------
http://www.boincstats.com/signature/user_664861.gif

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Trouver la plus grande et la plus petite valeur

 

Sujets relatifs
[PERL] un equivalent en perl du awk ou cut en shell ??[Perl] Fonction avec paramètres optionnels
[perl] est ce correct ??interfacer du perl en c++
[Perl] Besoin d'un ti coup de pouce pour une regexpPb perl
[perl] Faire une page d'attente en CGIperl et linux
[VB6] Comment faire passer une valeur d'un formulaire à un autreperl et df
Plus de sujets relatifs à : [Perl] Trouver la plus grande et la plus petite valeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR