Unix の ‘ls’ コマンド (少なくとも OS X では) のデフォルト出力のように、列に印刷したい大きな Ruby 配列があります。これを行うことができる gem または組み込みメソッドはありますか?私はawesome_print gemを知っています。セクシーな出力はありますが、コラムは提供していないようです。
Enumerable#each_slice はあなたの友達かもしれません。
$ irb
irb> a = (0..18).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
irb> a.each_slice(5) { |row| puts row.map{|e| "%5d" % e}.join(" ") }
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18
列内で順序付けしたい場合は、slice と Enumerable#zip を使用できます。
irb> cols = a.each_slice((a.size+2)/3).to_a
=> [[0, 1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12, 13], [14, 15, 16, 17, 18]]
irb> cols.first.zip( *cols[1..-1] ).each{|row| puts row.map{|e| e ? '%5d' % e : ' '}.join(" ") }
0 7 14
1 8 15
2 9 16
3 10 17
4 11 18
5 12
6 13