Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction de tri

2 réponses
Avatar
paul
Bonjour,

Je cherche comment trier un tableau de hachage de manière un peu spéciale :
* par ordre alphabétique insensible à la casse.
* de la chaine la plus longue à la moins longue.

Un sort {uc($b) cmp uc($a)} fait ça pas mal, sauf que ça sort dans l'ordre
alpha inversé (Z => A).
Un sort {uc($a) cmp uc($b)} mettant les chaînes les plus courtes en premier.

Exemple :
Alphabet
DEUX lignes ensemble
deux lignes
Deux
Etoiles
etrange
...
--
Paul

2 réponses

Avatar
Jean-Michel Hiver
Je cherche comment trier un tableau de hachage de manière un peu spéciale :
* par ordre alphabétique insensible à la casse.
* de la chaine la plus longue à la moins longue.


peut-etre quelque chose comme:
sort { uc ($a) cmp uc ($b) || length ($b) <=> length ($a) }
?

Avatar
Paul GABORIT
À (at) Fri, 05 Dec 2003 11:20:26 +0100,
paul écrivait (wrote):
Exemple :
Alphabet
DEUX lignes ensemble
deux lignes
Deux
Etoiles
etrange


Juste pour comprendre... avec le tableau suivant :

abda
abdaf
abde
abdef

Vous voulez obtenir :

abdaf
abda
abdef
adbe

C'est ça ?

Alors :

sort {(index(uc($a),uc($b)) or index(uc($b),uc($a)))
? length($b) <=> length($a)
: uc($a) cmp uc($b)} ...

devrait fonctionner.


--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>