Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,56 @@
|
|||
#define SOLID "#"
|
||||
#define EMPTY " "
|
||||
#define WET "v"
|
||||
|
||||
Dim Shared As String grid()
|
||||
Dim Shared As Integer last, lastrow, m, n
|
||||
|
||||
Sub make_grid(x As Integer, y As Integer, p As Double)
|
||||
m = x
|
||||
n = y
|
||||
Redim Preserve grid(x*(y+1)+1)
|
||||
last = Len(grid)
|
||||
Dim As Integer lastrow = last-n
|
||||
Dim As Integer i, j
|
||||
|
||||
For i = 0 To x-1
|
||||
For j = 1 To y
|
||||
grid(1+i*(y+1)+j) = Iif(Rnd < p, EMPTY, SOLID)
|
||||
Next j
|
||||
Next i
|
||||
End Sub
|
||||
|
||||
Function ff(i As Integer) As Boolean
|
||||
If i <= 0 Or i >= last Or grid(i) <> EMPTY Then Return 0
|
||||
grid(i) = WET
|
||||
Return i >= lastrow Or (ff(i+m+1) Or ff(i+1) Or ff(i-1) Or ff(i-m-1))
|
||||
End Function
|
||||
|
||||
Function percolate() As Integer
|
||||
For i As Integer = 2 To m+1
|
||||
If ff(i) Then Return 1
|
||||
Next i
|
||||
Return 0
|
||||
End Function
|
||||
|
||||
Dim As Double p
|
||||
Dim As Integer ip, i, cont
|
||||
|
||||
make_grid(15, 15, 0.55)
|
||||
Print "15x15 grid:"
|
||||
For i = 1 To Ubound(grid)
|
||||
Print grid(i);
|
||||
If i Mod 15 = 0 Then Print
|
||||
Next i
|
||||
|
||||
Print !"\nrunning 10,000 tests for each case:"
|
||||
For ip As Ubyte = 0 To 10
|
||||
p = ip / 10
|
||||
cont = 0
|
||||
For i = 1 To 10000
|
||||
make_grid(15, 15, p)
|
||||
cont += percolate()
|
||||
Next i
|
||||
Print Using "p=#.#: #.####"; p; cont/10000
|
||||
Next ip
|
||||
Sleep
|
||||
Loading…
Add table
Add a link
Reference in a new issue