Ordered partitions: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (→{{header|Perl 6}}: mark as broken) |
SqrtNegInf (talk | contribs) (→{{header|Perl 6}}: provisional fix) |
||
Line 1,561: | Line 1,561: | ||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |
||
⚫ | |||
{{broken|Perl 6}} |
|||
⚫ | |||
<lang perl6>sub partition(@mask is copy) { |
<lang perl6>sub partition(@mask is copy) { |
||
my @op; |
|||
my $last = [+] @mask or return [[] xx @mask]; |
|||
my $last = [+] @mask or return [] xx 1; |
|||
for @mask.kv -> $k, $v { |
|||
next unless $v; |
next unless $v; |
||
temp @mask[$k] -= 1; |
temp @mask[$k] -= 1; |
||
for partition @mask |
for partition @mask -> @p { |
||
@p[$k].push: $last; |
|||
@op.push: @p; |
|||
} |
|||
} |
} |
||
return @op; |
|||
} |
} |
||
.say for reverse partition [2,0,2];</lang> |
|||
{{out}} |
{{out}} |
||
<pre>[[1, 2], |
<pre>[[1, 2], (Any), [3, 4]] |
||
[[1, 3], |
[[1, 3], (Any), [2, 4]] |
||
[[2, 3], |
[[2, 3], (Any), [1, 4]] |
||
[[1, 4], |
[[1, 4], (Any), [2, 3]] |
||
[[2, 4], |
[[2, 4], (Any), [1, 3]] |
||
[[3, 4], |
[[3, 4], (Any), [1, 2]]</pre> |
||
=={{header|Phix}}== |
=={{header|Phix}}== |