George George wrote:
> Given an array of strings e.g.
>  x = ["abc","abcde" "def","xyzwj"] and of different lengths,
> how can you efficiently create new arrays of strings which are of the
> same length. for example the above array can be transformed into
> 
> x1 = ["abc","def"]
> x2 = ["abcde","xyzwj"]
> 
> Thank you.

y = {}
x.each do |v|
  y[v.length] || = []
  y[v.length] << v
end
y.values

or if you prefer less lines..

x.inject({}) do |h, v|
  (y[v.length] || = []) << v
  h
end.values
-- 
Posted via http://www.ruby-forum.com/.