7 May 11:59
[RailsFr] Re: aide "sort" d'index trop facile, mais je n'y arrive pas
From: Lionel Bouton <lionel-subscription@...>
Subject: [RailsFr] Re: aide "sort" d'index trop facile, mais je n'y arrive pas
Newsgroups: gmane.comp.lang.ruby.rails.french
Date: 2008-05-07 09:59:01 GMT
Subject: [RailsFr] Re: aide "sort" d'index trop facile, mais je n'y arrive pas
Newsgroups: gmane.comp.lang.ruby.rails.french
Date: 2008-05-07 09:59:01 GMT
Thibaut Barrère wrote the following on 07.05.2008 11:44 :
> hello,
>
> je te propose ceci (d'autres amélioreront peut être! c'est le ruby
> quizz de l'après midi):
>
> irb(main):037:0> a
> => [10, 2, 20, 14, 33]
> irb(main):038:0> a.map { |e| a.sort.index(e)+1 }.reverse
> => [5, 3, 4, 1, 2]
>
Ca ne marche pas si tu as deux éléments identiques dans le tableau de
départ (sans compter que faire un sort + index pour chaque entrée du
tableau va vite devenir prohibitif).
a = [ 10, 2, 20, 14, 33 ]
b = []
a.each_with_index { |v,i| b[i] = [ v, i + 1 ] }
b.sort_by { |o| o[0] }.map { |v| v[1] }
=> [2, 1, 4, 3, 5]
On peut s'en sortir en une ligne avec map_with_index qui existe dans
Ruby 1.9 (et dans certaines gems) si j'ai bonne mémoire :
a.map_with_index { |v,i| [ v, i + 1 ] }.sort_by { |o| o[0] }.map { |v|
v[1] }
Lionel
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse railsfrance@...
Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance-unsubscribe@...
-~----------~----~----~----~------~----~------~--~---
RSS Feed