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

7 lines
163 B
Ruby
Raw Permalink Normal View History

2015-02-20 00:35:01 -05:00
def partition(mask)
return [[]] if mask.empty?
[*1..mask.inject(:+)].permutation.map {|perm|
mask.map {|num_elts| perm.shift(num_elts).sort }
}.uniq
end