George George wrote:
> i have a listing which looks like this
> 1
> 2
> 3
> 
> 3
> 4
> 5
> 
> 20
> 3
> 5
> 5
> 
> i would like a quick way to format that output such that i end up with 3
> columns like the following.
> 1,2,20
> 2,4,3
> 3,5,5
>     5
> 
> any ideas?

src = "1\n2\n3\n\n3\n4\n5\n\n20\n3\n5\n5"
rows = src.split("\n\n").collect { |b| b.split("\n") }
m = rows.collect { |r| r.size }.max
m.times { |i| puts rows.collect { |r| r[i] }.join(",") }

No witchcraft there.

I'd say it's better to use fastercsv gem for outputting, as it handles 
values which need quoting (e.g. values which themselves contain commas)

require 'rubygems'
require 'fastercsv'
src = "1\n2\n3\n\n3\n4\n5\n\n20\n3\n5,9\n5"
rows = src.split("\n\n").collect { |b| b.split("\n") }
m = rows.collect { |r| r.size }.max
FCSV { |out| m.times { |i| out << rows.collect { |r| r[i] } } }
-- 
Posted via http://www.ruby-forum.com/.