6 lines
163 B
Ruby
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
|