Anonymous user
Permutations/Derangements: Difference between revisions
→{{header|PureBasic}}
m (→Using a module: Add libheader) |
|||
Line 2,393:
=={{header|PureBasic}}==
Brute Force
<lang PureBasic>
Procedure.q perm(n)
ProcedureReturn (perm(n-1)+perm(n-2))*(n-1)
EndProcedure
factFile.s="factorials.txt"
tempFile.s="temp.txt"
Line 2,409 ⟶ 2,407:
DeleteFile(tempFile.s)
DeleteFile(drngFile.s)
n=4
; create our storage file
f.s=factFile.s
If CreateFile(
WriteStringN(
WriteStringN(
CloseFile(
Else
Debug "not createfile :"+f.s
EndIf
showfactorial=#
; cw("nfactorial n ="+str(n))
Debug "nfactorial n ="+
EndIf
; build up the factorial combinations
Next
; extract the derangements
; cw("derangements["+str(perm(n))+"] for n="+str(n))
Debug "derangements["+
; cw("")
Debug ""
; show the first 20 derangements
; cw("derangements["+str(perm(i))+"] for n="+str(i))
Debug "derangements["+
Next
End
derangements:
x=0
If ReadFile(
Repeat
r.s = ReadString(
cs=CountString(r.s,".")
hit=0
t.s=""
; scan for numbers at their index
s.s=StringField(r.s,i,".")
t.s+s.s+"."
Next
t.s=
; show only those which are valid
x+1
; cw(t.s+" "+str(x))
Debug t.s+" "+
WriteStringN(
EndIf
EndIf
Until Eof(0)
CloseFile(
CloseFile(
Else
Debug "not readfile :"+factFile.s
Line 2,481 ⟶ 2,480:
; cw("")
Debug ""
Return
nfactorial:
x=0
If ReadFile(
Repeat
r.s = ReadString(
cs=CountString(r.s,".")
t.s=""
s.s=StringField(r.s,i,".")
t.s+"."+
Else
t.s+"."+s.s
EndIf
Next
t.s=
x+1
; cw(t.s+" "+str(x))
Debug t.s+" "+
EndIf
WriteStringN(
Next
EndIf
Until Eof(0)
CloseFile(
CloseFile(
Else
Debug "not readfile :"+factFile.s
Line 2,519 ⟶ 2,518:
CopyFile(tempFile.s,factFile.s)
DeleteFile(tempFile.s)
Return
</lang>
|