Permutations/Derangements: Difference between revisions

Content added Content deleted
Line 2,395: Line 2,395:
Brute Force
Brute Force
<lang PureBasic>
<lang PureBasic>
Procedure.q perm(n)
Procedure.q Subfactoral(n)
If n=0:ProcedureReturn 1:EndIf
If n=0:ProcedureReturn 1:EndIf
If n=1:ProcedureReturn 0:EndIf
If n=1:ProcedureReturn 0:EndIf
ProcedureReturn (perm(n-1)+perm(n-2))*(n-1)
ProcedureReturn (Subfactoral(n-1)+Subfactoral(n-2))*(n-1)
EndProcedure
EndProcedure
Line 2,434: Line 2,434:
; extract the derangements
; extract the derangements
; cw("derangements["+str(perm(n))+"] for n="+str(n))
; cw("derangements["+str(perm(n))+"] for n="+str(n))
Debug "derangements["+Str(perm(n))+"] for n="+Str(n)
Debug "derangements["+Str(Subfactoral(n))+"] for n="+Str(n)
Gosub derangements
Gosub derangements
; cw("")
; cw("")
Line 2,441: Line 2,441:
; show the first 20 derangements
; show the first 20 derangements
For i=0 To 20
For i=0 To 20
; cw("derangements["+str(perm(i))+"] for n="+str(i))
Debug "derangements["+Str(Subfactoral(i))+"] for n="+Str(i)
Debug "derangements["+Str(perm(i))+"] for n="+Str(i)
Next
Next

End
End