37 lines
664 B
Text
37 lines
664 B
Text
global list[] rlist[][] .
|
|
proc permlist k .
|
|
if k >= len list[]
|
|
for i to len list[]
|
|
if i = list[i] : return
|
|
.
|
|
rlist[][] &= list[]
|
|
return
|
|
.
|
|
for i = k to len list[]
|
|
swap list[i] list[k]
|
|
permlist k + 1
|
|
swap list[k] list[i]
|
|
.
|
|
.
|
|
#
|
|
proc derang n &r[][] .
|
|
rlist[][] = [ ]
|
|
list[] = [ ]
|
|
for i to n : list[] &= i
|
|
permlist 1
|
|
r[][] = rlist[][]
|
|
.
|
|
r[][] = [ ]
|
|
derang 4 r[][]
|
|
print r[][]
|
|
#
|
|
func subfac n .
|
|
if n < 2 : return 1 - n
|
|
return (subfac (n - 1) + subfac (n - 2)) * (n - 1)
|
|
.
|
|
#
|
|
print "counted / calculated"
|
|
for n = 0 to 9
|
|
derang n r[][]
|
|
print n & ": " & len r[][] & " " & subfac n
|
|
.
|