24 lines
568 B
Text
24 lines
568 B
Text
F derangements(n)
|
||
[[Int]] r
|
||
V perm = Array(0 .< n)
|
||
L
|
||
I all(enumerate(perm).map((indx, p) -> indx != p))
|
||
r [+]= perm
|
||
I !perm.next_permutation()
|
||
L.break
|
||
R r
|
||
|
||
F subfact(n) -> Int64
|
||
R I n < 2 {1 - n} E (subfact(n - 1) + subfact(n - 2)) * (n - 1)
|
||
|
||
V n = 4
|
||
print(‘Derangements of ’Array(0 .< n))
|
||
L(d) derangements(n)
|
||
print(‘ ’d)
|
||
|
||
print("\nTable of n vs counted vs calculated derangements")
|
||
L(n) 10
|
||
print(‘#2 #<6 #.’.format(n, derangements(n).len, subfact(n)))
|
||
|
||
n = 20
|
||
print("\n!#. = #.".format(n, subfact(n)))
|