Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: daniel.r.23 en 2 Mayo 2013, 01:32 am



Título: orenar array en ruby
Publicado por: daniel.r.23 en 2 Mayo 2013, 01:32 am
Buenas tardes, tengo un problema al tratar de ordenar un array como esté:
Código:
miarray = [[500417,12018],[500016,12108],[131313,12108],[418356,21033]]
y que el resultado se este:
Código:
418356 , 21033
500016 , 12108
131313 , 12108
500417 , 12018
el código para ordenar seía esté:
Código:
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!!


Título: Re: orenar array en ruby
Publicado por: daniel.r.23 en 2 Mayo 2013, 02:20 am
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:
Código:
# -*- 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:
Código:
500016 12027
500417 12028
500001 12028
131313 12029
Ordenado:
131313 12029
500417 12028
500001 12028
500016 12027