RosettaCodeData/Task/Ordered-Partitions/Ruby/ordered-partitions-1.rb
2015-02-20 00:35:01 -05:00

6 lines
163 B
Ruby

def partition(mask)
return [[]] if mask.empty?
[*1..mask.inject(:+)].permutation.map {|perm|
mask.map {|num_elts| perm.shift(num_elts).sort }
}.uniq
end