September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -0,0 +1,37 @@
|
|||
function deranged(sequence s1, sequence s2)
|
||||
for i=1 to length(s1) do
|
||||
if s1[i]==s2[i] then return 0 end if
|
||||
end for
|
||||
return 1
|
||||
end function
|
||||
|
||||
function derangements(integer n)
|
||||
sequence ts = tagset(n)
|
||||
sequence res = {}
|
||||
for i=1 to factorial(n) do
|
||||
sequence s = permute(i,ts)
|
||||
if deranged(s,ts) then
|
||||
res = append(res,s)
|
||||
end if
|
||||
end for
|
||||
return res
|
||||
end function
|
||||
|
||||
function subfactorial(integer n)
|
||||
if n<=0 then return 1 end if
|
||||
if n=1 then return 0 end if
|
||||
return (n-1)*(subfactorial(n-1)+subfactorial(n-2))
|
||||
end function
|
||||
|
||||
?derangements(4)
|
||||
for n=0 to 9 do
|
||||
printf(1,"%d: counted:%d, calculated:%d\n",{n,length(derangements(n)),subfactorial(n)})
|
||||
end for
|
||||
printf(1,"!20=%d (incorrect!)\n",{subfactorial(20)})
|
||||
include builtins\bigatom.e
|
||||
function ba_subfactorial(integer n)
|
||||
if n<=0 then return 1 end if
|
||||
if n=1 then return 0 end if
|
||||
return ba_multiply(n-1,ba_add(ba_subfactorial(n-1),ba_subfactorial(n-2)))
|
||||
end function
|
||||
ba_printf(1,"!20=%B (bigatom)\n",ba_subfactorial(20))
|
||||
Loading…
Add table
Add a link
Reference in a new issue