class Partitions

Public Instance Methods

enumerates(n) click to toggle source
# File lib/partitions.rb, line 3
def enumerates(n)
  partitions = {}
  partitions[1] = [[1]]
  2.upto(n) do |value|
    partitions[value] = partition(value, partitions)
  end
  partitions[n]
end
partition(n, previous) click to toggle source
# File lib/partitions.rb, line 12
def partition(n, previous)
  result = [[n]]
  (n - 1).downto(1) do |value|
    result.concat(sumfy(value, previous[n - value]))
  end
  result
end
sumfy(number, partitions) click to toggle source
# File lib/partitions.rb, line 20
def sumfy(number, partitions)
  result = []
  partitions.each do |partition|
    result << ([number] + partition) if (number >= partition.first)
  end
  result
end