RosettaCodeData/Task/Permutations-Derangements/Perl-6/permutations-derangements.pl6

16 lines
360 B
Raku
Raw Permalink Normal View History

2018-06-22 20:57:24 +00:00
sub derangements(@l) {
@l.permutations.grep(-> @p { none(@p Zeqv @l) })
2013-04-10 23:57:08 -07:00
}
2018-06-22 20:57:24 +00:00
sub prefix:<!>(Int $n) {
(1, 0, 1, -> $a, $b { ($++ + 2) × ($b + $a) } ... *)[$n]
2016-12-05 22:15:40 +01:00
}
2013-04-10 23:57:08 -07:00
2018-06-22 20:57:24 +00:00
say 'derangements([1, 2, 3, 4])';
say derangements([1, 2, 3, 4]), "\n";
2013-04-10 23:57:08 -07:00
2018-06-22 20:57:24 +00:00
say 'n == !n == derangements(^n).elems';
for 0 .. 9 -> $n {
say "!$n == { !$n } == { derangements(^$n).elems }"
2013-04-10 23:57:08 -07:00
}