Ciao oggi da perfetto fancazzista ancora semiubriaco (3 bloody mary, 2
vodka tonic, 1 ginger&whiskey, 1 russian, 2 panini a caso) ho provato
a risolvere il problema proposto ieri da Matteo:
“Ho un array di tre categorie di elementi, come lo partiziono in un
solo passaggio?”
La mia soluzione (comprensiva di due test, giusto per essere
ridondante) è qui: http://pastie.org/279258
Qualcuno ha una soluzione più bella?
%w(m m f g f m f g m m g f).sort
#=> [“f”, “f”, “f”, “f”, “g”, “g”, “g”, “m”, “m”, “m”, “m”, “m”]
In un passaggio.
Il giorno 25/set/08, alle ore 14:15, Luca G. ha scritto:
E inoltre, se sono elementi diversi, tipo numeri che finiscono per 9,
numeri che finiscono per 3 e stringhe, sort non va bene.
Il giorno 25/set/08, alle ore 14:15, Luca G. ha scritto:
Le specifiche parlavano di elementi, io ho solo fatto un test con
caratteri 
E anche sort_by non lo fa in un solo passaggio.
Il giorno 25/set/08, alle ore 14:23, Luca G. ha scritto:
Con Ruby 1.9 (credo) possiamo sfruttare il metodo group_by, che e’
definito anche in Rails:
pool = %w(m m f g f m f g m m g f)
=> [“m”, “m”, “f”, “g”, “f”, “m”, “f”, “g”, “m”, “m”, “g”, “f”]
pool.group_by {|x| x}.values.flatten
=> [“m”, “m”, “m”, “m”, “m”, “f”, “f”, “f”, “f”, “g”, “g”, “g”]
Per versioni di ruby precedenti, si puo’ definire il metodo group_by:
module Enumerable
def group_by
assoc = Hash.new
each do |element|
key = yield(element)
if assoc.has_key?(key)
assoc[key] << element
else
assoc[key] = [element]
end
end
assoc
end
end
On Sep 25, 2008, at 2:53 PM, Claudio Petasecca D. wrote:
Con Ruby 1.9 (credo) possiamo sfruttare il metodo group_by, che e’
definito anche in Rails:
anche ruby 1.8.7