orenar array en ruby

Iniciado por daniel.r.23, 2 Mayo 2013, 01:32 AM

0 Miembros y 1 Visitante están viendo este tema.

daniel.r.23

Buenas tardes, tengo un problema al tratar de ordenar un array como esté:

miarray = [[500417,12018],[500016,12108],[131313,12108],[418356,21033]]

y que el resultado se este:

418356 , 21033
500016 , 12108
131313 , 12108
500417 , 12018

el código para ordenar seía esté:

minuevoarray = miarray.sort_by{|x| [x[1],x[0]]}

pero el tema es que esto no hace nada mas que tirarme un error en el método.

Acepto ideas!!

daniel.r.23

Se puede dar como solucionado, el error que me daba no tengo ni idea de porque saltaba, pero ahora ya no aparece.
Les dejo el código funcionando segun lo que yo planteaba:

# -*- coding: UTF-8 -*-
     
# 4ª edición

miarray = [ [500016,12027],[500417,12028],[500001,12028],[131313,12029]]
puts miarray[0][0].to_s() +" "+ miarray[0][1].to_s()
puts miarray[1][0].to_s() +" "+ miarray[1][1].to_s()
puts miarray[2][0].to_s() +" "+ miarray[2][1].to_s()
puts miarray[3][0].to_s() +" "+ miarray[3][1].to_s()
puts "Ordenado:"

orden = miarray.sort_by{|x| [-x[1], -x[0]]}

puts orden[0][0].to_s() +" "+ orden[0][1].to_s()
puts orden[1][0].to_s() +" "+ orden[1][1].to_s()
puts orden[2][0].to_s() +" "+ orden[2][1].to_s()
puts orden[3][0].to_s() +" "+ orden[3][1].to_s()


y el resultado es este:

500016 12027
500417 12028
500001 12028
131313 12029
Ordenado:
131313 12029
500417 12028
500001 12028
500016 12027