September 2017 Update

This commit is contained in:
Ingy döt Net 2017-09-23 10:01:46 +02:00
parent bba7bfd280
commit ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions

View file

@ -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))