[bash] existe-t-il un moyen de trouver le min et max dans...
Résolu
Swiss Knight
Messages postés
2257
Statut
Membre
-
Swiss Knight Messages postés 2257 Statut Membre -
Swiss Knight Messages postés 2257 Statut Membre -
Bonjour !
Existe-t-il un moyen simple en bash pour trouver le minimum et le maximum de nombres contenus dans une chaîne ?
Exemple :
$ A=78,99,12
Un truc qui retourne 12 comme minimum et 99 comme maxi ?
Mieux : un truc qui retourne la moyenne du min trouvé et du max trouvé, i.e. ici (99+12)/2
arrondi à l'entier le plus proche (bon en l'occurrence ce sera l'entier directement supérieur, mais si on faisait une division par 3 ce pourrait être différent)
Je n'ai pas trouvé de fonction de ce genre :
min(A)=12
max(A)=99
même dans bc.
Merci beaucoup !
--
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
Existe-t-il un moyen simple en bash pour trouver le minimum et le maximum de nombres contenus dans une chaîne ?
Exemple :
$ A=78,99,12
Un truc qui retourne 12 comme minimum et 99 comme maxi ?
Mieux : un truc qui retourne la moyenne du min trouvé et du max trouvé, i.e. ici (99+12)/2
arrondi à l'entier le plus proche (bon en l'occurrence ce sera l'entier directement supérieur, mais si on faisait une division par 3 ce pourrait être différent)
Je n'ai pas trouvé de fonction de ce genre :
min(A)=12
max(A)=99
même dans bc.
Merci beaucoup !
--
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
3 réponses
-
hello
awk sait faire$ awk '{n=split($0, a, ","); asort(a); print int((a[1]+a[n])/2+.5)}' <<<"78,99,12" 56 $ -
salut,
bash sait fairefor i in ${var//,/ } do min=$((min?(min>i?i:min):i)) max=$((max?(max<i?i:max):i)) done echo "min: $min - max: $max - moy: $(((max+min)/2))" min: 12 - max: 99 - moy: 55 -
:-)
Vos deux solutions fonctionnent très bien. J'ai encore beaucoup à apprendre.
Merci !
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-