Permutations/Derangements: Difference between revisions

m
Line 2,166:
{{trans|Perl}}
{{works with|Rakudo|2016.10}}
 
<lang perl6>sub derangements(@l) {
permutations(@l).permutations.grep(-> @p { none(@p Zeqv @l) })
}
 
Line 2,174 ⟶ 2,175:
}
 
say 'derangements([1, 2, 3, 4])';
say derangements([1, 2, 3, 4]), "\n";
 
say 'n == !n == derangements(1 .. n).elems';
for 0 .. 9 -> $n {
say "!$n == { !$n } == { derangements(1 .. $n).elems }"
}</lang>
{{out}}
<pre>
derangements([1, 2, 3, 4])
((2 1 4 3) (2 3 4 1) (2 4 1 3) (3 1 4 2) (3 4 1 2) (3 4 2 1) (4 1 2 3) (4 3 1 2) (4 3 2 1))
 
!0 == 1
n == !n == derangements(1 .. n).elems
!1 == 0
!20 == 1 == 1
!31 == 20 == 0
!42 == 91 == 1
!53 == 442 == 2
!64 == 2659 == 9
!75 == 185444 == 44
!86 == 14833265 == 265
!97 == 1334961854 == 1854
!8 == 14833 == 14833
!9 == 133496 == 133496
</pre>
 
Anonymous user