El día 22 de enero de 2010 16:59, Martin Aceto
<[email protected]> escribió:
> Hola como estan,
>
> hoy se nos planteo tener que revertir el orden de palabras, ordenandolas
> verticalmente en una matris, y nos pusimos a escribir codigo para ver si lo
> podiamos hacer. De todo lo que escrbimos nos quedo funcionando esto que esta
> mas abajo, y ademas nos quedo la duda si existia una forma mas facil y
> performante de hacerlo !
>
> Este codigo se puede mejorar ?
>
> array=[]
>
> ["texto uno", "mas palabras", "muchas mas palabras"].each{|a| array <<
> a.scan(/./m)}
>
> array.sort!{|i,j| j.length <=> i.length}.each{|s| s[array[0].length-1] ||=
> nil }
>
> [
> ["m", "u", "c", "h", "a", "s", " ", "m", "a", "s", " ", "p", "a", "l", "a",
> "b", "r", "a", "s"],
> ["m", "a", "s", " ", "p", "a", "l", "a", "b", "r", "a", "s", nil, nil, nil,
> nil, nil, nil, nil],
> ["t", "e", "x", "t", "o", " ", "u", "n", "o", nil, nil, nil, nil, nil, nil,
> nil, nil, nil, nil]
> ]
>
> array.transpose
>
> [
> ["m", "m", "t"],
> ["u", "a", "e"],
> ["c", "s", "x"],
> ["h", " ", "t"],
> ["a", "p", "o"],
> ["s", "a", " "],
> [" ", "l", "u"],
> ["m", "a", "n"],
> ["a", "b", "o"],
> ["s", "r", nil],
> [" ", "a", nil],
> ["p", "s", nil],
> ["a", nil, nil],
> ["l", nil, nil],
> ["a", nil, nil],
> ["b", nil, nil],
> ["r", nil, nil],
> ["a", nil, nil],
> ["s", nil, nil]
> ]

No se si será mejor, más rápido o más fácil, pero tenía ganas de jugar
con esto un poco, así que ahí va:

palabras = ["texto uno", "mas palabras", "muchas mas palabras"]

max_length = palabras.map(&:length).max

palabras.sort_by(&:length).reverse.map {|p| p.split(//).fill(nil,
p.length, max_length - p.length) }.transpose

Saludos,
Matías

> Saludos.-
>
> --
> Martin
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a