15 lines
334 B
Raku
15 lines
334 B
Raku
sub partition(@mask is copy) {
|
|
my @op;
|
|
my $last = [+] @mask or return [] xx 1;
|
|
for @mask.kv -> $k, $v {
|
|
next unless $v;
|
|
temp @mask[$k] -= 1;
|
|
for partition @mask -> @p {
|
|
@p[$k].push: $last;
|
|
@op.push: @p;
|
|
}
|
|
}
|
|
return @op;
|
|
}
|
|
|
|
.say for reverse partition [2,0,2];
|