Friday, April 11, 2008

Array.sort en Ruby


La propiedad SORT para los Arrays en Ruby, funciona muy bien, pero solo cuando se trata de valores numéricos...Pero que pasa con los alfanuméricos? Pues falla miserablemente...

Lo que debemos hacer, es nuestro propio algoritmo de burbuja y convertir los valores a enteros antes del ordenamiento.

Vean el código fuente y la imagen del resultado...


$Files = Array.new

$Files = ["1.txt","10.txt","2.txt","3.txt","4.txt","11.txt",
"12.txt","5.txt","6.txt","7.txt","8.txt","9.txt"]

$count = 0
$counter = 0

$Files.sort!

for file in $Files
puts file
end

puts "--------------------------"

for file in $Files
$count = 0
for do_file in $Files
if $Files[$count].to_i > $Files[$counter].to_i
$aux = $Files[$count]
$Files[$count] = $Files[$counter]
$Files[$counter] = $aux
end
$count += 1
end
$counter += 1
end

for file in $Files
puts file
end



Como pueden ver, el primero es el SORT de Ruby y el segundo es mi algoritmo -;)

Saludos,

Blag.

3 comments:

Rodolfo said...

Hola, llegué a tu blog buscando cosas de Ruby. Quería comentarte que el swap entre dos variables lo podés hacer con a,b = b,a.
Saludos

Alvaro "Blag" Tejada Galindo said...

Muchas gracias por los comentatios, realmente los agradezco -:)

La verdad, aunque me encanta Ruby, definitivamente no soy ningún experto y aún me quedan muchas cosas por aprender.

En realidad, hice el programa inicialmente en ABAP y no en PHP o ASP...Lo del símbolo del $, es porque en realidad me gusta programarlo así, puesto que diferencio las variables normales de las constantes -:D

He leído muchos libros sobre Ruby, pero a veces cuando un programa en varios lenguajes, tiende a mezclarlos y utilizar formatos de unos en otros -;)

Saludos,

Blag.

Alvaro "Blag" Tejada Galindo said...

Jajaja...Voy a tomar muy en cuenta todas tus recomendaciones para mis futuros desarrollos en Ruby -:)

Aunque dudo mucho que deje de programar en PHP, Flex o ABAP... -;)

Saludos,

Blag.