RosettaCodeData/Task/Ordered-Partitions/Ruby/ordered-partitions-1.rb

7 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