Sha256: 6fd323fd2dd64197024ffc5620f39200e9fc63a43585e8d626f868f5d0fdc9c9

Contents?: true

Size: 440 Bytes

Versions: 7

Compression:

Stored size: 440 Bytes

Contents

module Enumerable

  # Modulate. Divide an array into groups by modulo of the index.
  #
  # [2,4,6,8].modulate(2)  #=> [[2,6],[4,8]]
  #
  #  CREDIT: Trans
  #
  # NOTE: Would this be better named 'collate'?

  def modulate(modulo)
    return to_a if modulo == 1
    raise ArgumentError, 'bad modulo' if size % modulo != 0
    r = Array.new(modulo, [])
    (0...size).each do |i|
      r[i % modulo] += [self[i]]
    end
    r
  end

end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
facets-2.4.0 lib/facets/enumerable/modulate.rb
facets-2.4.1 lib/facets/enumerable/modulate.rb
facets-2.4.2 lib/core/facets/enumerable/modulate.rb
facets-2.4.3 lib/core/facets/enumerable/modulate.rb
facets-2.4.4 lib/core/facets/enumerable/modulate.rb
facets-2.4.5 lib/core/facets/enumerable/modulate.rb
mack-facets-0.8.2 lib/gems/facets-2.4.5/lib/core/facets/enumerable/modulate.rb