Ordered partitions: Difference between revisions

Content added Content deleted
m (→‎{{header|Perl 6}}: mark as broken)
(→‎{{header|Perl 6}}: provisional fix)
Line 1,561: Line 1,561:


=={{header|Perl 6}}==
=={{header|Perl 6}}==
{{works with|Rakudo|2018.04.1}}
{{broken|Perl 6}}
{{works with|niecza|2012-06}}
<lang perl6>sub partition(@mask is copy) {
<lang perl6>sub partition(@mask is copy) {
my @op;
my $last = [+] @mask or return [[] xx @mask];
sort gather for @mask.kv -> $k,$v {
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 { .take.[$k].push($last) }
for partition @mask -> @p {
@p[$k].push: $last;
@op.push: @p;
}
}
}
return @op;
}
}


.perl.say for partition [2,0,2];</lang>
.say for reverse partition [2,0,2];</lang>
{{out}}
{{out}}
<pre>[[1, 2], [], [3, 4]]
<pre>[[1, 2], (Any), [3, 4]]
[[1, 3], [], [2, 4]]
[[1, 3], (Any), [2, 4]]
[[2, 3], [], [1, 4]]
[[2, 3], (Any), [1, 4]]
[[1, 4], [], [2, 3]]
[[1, 4], (Any), [2, 3]]
[[2, 4], [], [1, 3]]
[[2, 4], (Any), [1, 3]]
[[3, 4], [], [1, 2]]</pre>
[[3, 4], (Any), [1, 2]]</pre>


=={{header|Phix}}==
=={{header|Phix}}==