Permutations/Derangements: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added syntax colouring the hard way) |
(Added Quackery.) |
||
Line 2,935: | Line 2,935: | ||
!20 = 895014631192902121</pre> |
!20 = 895014631192902121</pre> |
||
=={{header|Quackery}}== |
|||
<lang Quackery> |
|||
[ stack ] is deranges.num ( --> [ ) |
|||
forward is (deranges) |
|||
[ over size |
|||
deranges.num share = iff |
|||
[ over temp take |
|||
swap nested join |
|||
temp put ] |
|||
else |
|||
[ dup size times |
|||
[ 2dup i^ pluck |
|||
dip [ over size ] |
|||
tuck != iff |
|||
[ rot swap |
|||
nested join |
|||
swap (deranges) ] |
|||
else |
|||
[ drop 2drop ] ] ] |
|||
2drop ] resolves (deranges) ( [ [ --> ) |
|||
[ dup deranges.num put |
|||
[] swap times [ i^ join ] |
|||
[] temp put |
|||
[] swap (deranges) |
|||
temp take |
|||
deranges.num release ] is derangements ( n --> [ ) |
|||
[ dup 0 = iff [ drop 1 ] done |
|||
1 0 rot |
|||
1 - times |
|||
[ swap over + i^ 1+ * ] |
|||
nip ] is sub! ( n --> n ) |
|||
4 derangements witheach [ echo cr ] |
|||
cr |
|||
10 times |
|||
[ i^ echo sp |
|||
i^ derangements size echo sp |
|||
i^ sub! echo cr ] |
|||
cr |
|||
20 sub! echo</lang> |
|||
{{out}} |
|||
<pre>[ 1 0 3 2 ] |
|||
[ 1 2 3 0 ] |
|||
[ 1 3 0 2 ] |
|||
[ 2 0 3 1 ] |
|||
[ 2 3 0 1 ] |
|||
[ 2 3 1 0 ] |
|||
[ 3 0 1 2 ] |
|||
[ 3 2 0 1 ] |
|||
[ 3 2 1 0 ] |
|||
0 1 1 |
|||
1 0 0 |
|||
2 1 1 |
|||
3 2 2 |
|||
4 9 9 |
|||
5 44 44 |
|||
6 265 265 |
|||
7 1854 1854 |
|||
8 14833 14833 |
|||
9 133496 133496 |
|||
895014631192902121</pre> |
|||
=={{header|Racket}}== |
=={{header|Racket}}== |