September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
40
Task/Benfords-law/PureBasic/benfords-law.purebasic
Normal file
40
Task/Benfords-law/PureBasic/benfords-law.purebasic
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#MAX_N=1000
|
||||
NewMap d1.i()
|
||||
Dim fi.s(#MAX_N)
|
||||
fi(0)="0" : fi(1)="1"
|
||||
Declare.s Sigma(sx.s,sy.s)
|
||||
|
||||
For I=2 To #MAX_N
|
||||
fi(I)=Sigma(fi(I-2),fi(I-1))
|
||||
Next
|
||||
|
||||
For I=1 To #MAX_N
|
||||
d1(Left(fi(I),1))+1
|
||||
Next
|
||||
|
||||
Procedure.s Sigma(sx.s, sy.s)
|
||||
Define i.i, v1.i, v2.i, r.i
|
||||
Define s.s, sa.s
|
||||
sy=ReverseString(sy) : s=ReverseString(sx)
|
||||
For i=1 To Len(s)*Bool(Len(s)>Len(sy))+Len(sy)*Bool(Len(sy)>=Len(s))
|
||||
v1=Val(Mid(s,i,1))
|
||||
v2=Val(Mid(sy,i,1))
|
||||
r+v1+v2
|
||||
sa+Str(r%10)
|
||||
r/10
|
||||
Next i
|
||||
If r : sa+Str(r%10) : EndIf
|
||||
ProcedureReturn ReverseString(sa)
|
||||
EndProcedure
|
||||
|
||||
OpenConsole("Benford's law: Fibonacci sequence 1.."+Str(#MAX_N))
|
||||
|
||||
Print(~"Dig.\t\tCnt."+~"\t\tExp.\t\tDif.\n\n")
|
||||
ForEach d1()
|
||||
Print(RSet(MapKey(d1()),4," ")+~"\t:\t"+RSet(Str(d1()),3," ")+~"\t\t")
|
||||
ex=Int(#MAX_N*Log(1+1/Val(MapKey(d1())))/Log(10))
|
||||
PrintN(RSet(Str(ex),3," ")+~"\t\t"+RSet(StrF((ex-d1())*100/ex,5),8," ")+" %")
|
||||
Next
|
||||
|
||||
PrintN(~"\nPress Enter...")
|
||||
Input()
|
||||
Loading…
Add table
Add a link
Reference in a new issue