Sha256: 45db32fcb75112e6a7f3708c94e8d97f4d17c3c8a953e808d8c7ffa15cc9a258
Contents?: true
Size: 1.45 KB
Versions: 3
Compression:
Stored size: 1.45 KB
Contents
module Misc def self.intersect_sorted_arrays(a1, a2) e1, e2 = a1.shift, a2.shift intersect = [] while true break if e1.nil? or e2.nil? case e1 <=> e2 when 0 intersect << e1 e1, e2 = a1.shift, a2.shift when -1 e1 = a1.shift while not e1.nil? and e1 < e2 when 1 e2 = a2.shift e2 = a2.shift while not e2.nil? and e2 < e1 end end intersect end def self.counts(array) counts = {} array.each do |e| counts[e] ||= 0 counts[e] += 1 end counts end def self.chunk(array, num) total = array.length current = 0 while current < total last = current + num - 1 yield array[current..last] current = last + 1 end end # Divides the array into +num+ chunks of the same size by placing one # element in each chunk iteratively. def self.divide(array, num) num = 1 if num == 0 chunks = [] num.to_i.times do chunks << [] end array.each_with_index{|e, i| c = i % num chunks[c] << e } chunks end # Divides the array into chunks of +num+ same size by placing one # element in each chunk iteratively. def self.ordered_divide(array, num) last = array.length - 1 chunks = [] current = 0 while current <= last next_current = [last, current + num - 1].min chunks << array[current..next_current] current = next_current + 1 end chunks end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
scout-essentials-1.6.2 | lib/scout/misc/helper.rb |
scout-essentials-1.6.1 | lib/scout/misc/helper.rb |
scout-essentials-1.6.0 | lib/scout/misc/helper.rb |