Sha256: 05d8fa39832687c3df326ad4ce4a6edfcf55eca3e15e1442aade5db15338f3d1
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 KB
Contents
class Array def sum(identity = 0, &block) if block_given? map(&block).sum(identity) else inject(:+) || identity end end def mean sum / size end def median sorted = self.sort len = sorted.length return (sorted[(len - 1) / 2] + sorted[len / 2]) / 2.0 end def compakt self.reject do |i| i.nil? || (i.respond_to?(:length) && i.length == 0) || (i.respond_to?(:match) && i.match(/^\s+$/)) end end def random(num_elements = 1) num_elements == 1 ? self[Kernel.rand(size)] : sort_by{ Kernel.rand }.slice(0...num_elements) end def random_by_frequency(seed = nil) self.select{|i| i.is_a?(Hash) }.inject({}) do |memo, item| memo[item] = item['frequency'] || item[:frequency] || 0 memo end.random_by_frequency(seed) end def randomized sort_by { rand } end # Return subarrays of random length between a min and max def sections(min_size, max_size) sects = [] offset = 0 while offset < size next_size = (min_size..max_size).random.to_i sects << self[offset..offset+next_size] offset += next_size + 1 end sects end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bootstripe-0.2.23 | lib/bootstripe/array_additions.rb |
bootstripe-0.2.22 | lib/bootstripe/array_additions.rb |