Class: Array
- Inherits:
-
Object
- Object
- Array
- Defined in:
- lib/ruby/array/random.rb,
lib/ruby/array/columnize.rb
Constant Summary collapse
- ColumnizeDefaults =
{ :prepend => "", :orientation => :vertical, :spacing => 1 }
Instance Method Summary collapse
- #columnize(columns = nil, opts = {}) ⇒ Object
-
#random(n = nil) ⇒ Object
Get a random element of this array With an argument it gets you n elements without no index used more than once.
Instance Method Details
#columnize(columns = nil, opts = {}) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/ruby/array/columnize.rb', line 16 def columnize(columns=nil, opts={}) pre, ori, space = ColumnizeDefaults.merge(opts).values_at(:prepend, :orientation, :spacing) columns ||= 2 numrows = length.quo(columns).ceil sizes, print = Array.new(columns) { [] }, Array.new(numrows) { [] } if ori == :vertical then (self+Array.new(numrows*columns-length,"")).each_with_index { |e,i| sizes[i.div(numrows)] << e print[i%numrows] << e } else (self+Array.new(numrows*columns-length,"")).each_with_index { |e,i| sizes[i%columns] << e print[i.div(columns)] << e } end sizes = sizes.map { |e| e.map { |f| f.length }.max+space } format = "#{pre}%-#{sizes.join('s %-')}s" print.map { |e| format % e }.join("\n") end |
#random(n = nil) ⇒ Object
Get a random element of this array With an argument it gets you n elements without no index used more than once
4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/ruby/array/random.rb', line 4 def random(n=nil) unless n then at(rand(length)) else raise ArgumentError unless Integer === n and n.between?(0,length) ary = dup l = length n.times { |i| r = rand(l-i)+i ary[r], ary[i] = ary[i], ary[r] } ary.first(n) end end |