module Enumerable

Public Instance Methods

cluster() { |last.last| ... } click to toggle source

clumps adjacent elements together >> [2,2,2,3,3,4,2,2,1].cluster{|x| x}

> [[2, 2, 2], [3, 3], [4], [2, 2], [1]]

apidock.com/rails/Enumerable/group_by#508-Array-clustering

# File lib/forest/rails/core_ext/enumerable.rb, line 6
def cluster
  cluster = []
  each do |element|
    if cluster.last && yield(cluster.last.last) == yield(element)
      cluster.last << element
    else
      cluster << [element]
    end
  end
  cluster
end