sawine@7
|
1 |
import sys
|
sawine@7
|
2 |
import math
|
sawine@7
|
3 |
import rules
|
sawine@7
|
4 |
import gridmarshal as marshal
|
sawine@7
|
5 |
from grid import Grid
|
sawine@7
|
6 |
|
sawine@7
|
7 |
def ruleTest():
|
sawine@7
|
8 |
rule = rules.Rule()
|
sawine@7
|
9 |
grid = Grid()
|
sawine@7
|
10 |
grid.set((0, 0))
|
sawine@7
|
11 |
grid.set((0, 1)).set((1, 0)).set((0, -1)).set((-1, 0))
|
sawine@7
|
12 |
|
sawine@7
|
13 |
|
sawine@7
|
14 |
print "iteration radius(diff) area(diff) pi"
|
sawine@7
|
15 |
|
sawine@7
|
16 |
iterations = int(sys.argv[1])
|
sawine@7
|
17 |
|
sawine@7
|
18 |
for i in range(iterations):
|
sawine@7
|
19 |
A = len(grid)
|
sawine@7
|
20 |
r = grid.width() / 2.0
|
sawine@7
|
21 |
r_ideal = math.sqrt(A / math.pi)
|
sawine@7
|
22 |
A_ideal = r**2 * math.pi
|
sawine@7
|
23 |
pi = A / r**2
|
sawine@7
|
24 |
print "%i %f(%f) %i(%i) %f" % (i, r, r - r_ideal,
|
sawine@7
|
25 |
A, A - A_ideal, pi)
|
sawine@7
|
26 |
|
sawine@7
|
27 |
grid = rule.iterate(grid)
|
sawine@7
|
28 |
marshal.dumpGrid(grid, "grid.cfg")
|
sawine@7
|
29 |
#print
|
sawine@7
|
30 |
|
sawine@7
|
31 |
def rule2Test():
|
sawine@7
|
32 |
rule = rules.Rule2()
|
sawine@7
|
33 |
grid = Grid()
|
sawine@7
|
34 |
grid.set((0, 0)).set((-1, 0)).set((0, 1))
|
sawine@7
|
35 |
olda = 1
|
sawine@7
|
36 |
|
sawine@7
|
37 |
iterations = int(sys.argv[1])
|
sawine@7
|
38 |
|
sawine@7
|
39 |
for i in range(iterations):
|
sawine@7
|
40 |
a = (float(len(grid)) - grid.width()) * 4.0
|
sawine@7
|
41 |
pi = 1.0 / ((grid.width()-1)**2 / ((a + olda) / 2.0))
|
sawine@7
|
42 |
print i, grid.width(), len(grid), pi
|
sawine@7
|
43 |
grid = rule.iterate(grid)
|
sawine@7
|
44 |
olda = a
|
sawine@7
|
45 |
marshal.dumpGrid(grid, "grid.cfg")
|
sawine@7
|
46 |
|
sawine@7
|
47 |
def potentialTest():
|
sawine@7
|
48 |
rule = rules.PotentialGrowth()
|
sawine@7
|
49 |
grid = Grid()
|
sawine@7
|
50 |
grid.set((0, 0), 4)
|
sawine@7
|
51 |
|
sawine@7
|
52 |
iterations = int(sys.argv[1])
|
sawine@7
|
53 |
last_pi = 3.0
|
sawine@7
|
54 |
for i in range(iterations):
|
sawine@7
|
55 |
A = len(grid)
|
sawine@7
|
56 |
r = grid.width() / 4.0 + grid.height() / 4.0
|
sawine@7
|
57 |
r_ideal = math.sqrt(A / math.pi)
|
sawine@7
|
58 |
A_ideal = r**2 * math.pi
|
sawine@7
|
59 |
pi = A / r**2
|
sawine@7
|
60 |
pi = (pi + last_pi) / 2.0
|
sawine@7
|
61 |
last_pi = pi
|
sawine@7
|
62 |
print "%i %f(%f) %i(%i) %f" % (i, r, r - r_ideal,
|
sawine@7
|
63 |
A, A - A_ideal, pi)
|
sawine@7
|
64 |
|
sawine@7
|
65 |
grid = rule.iterate(grid)
|
sawine@7
|
66 |
marshal.dumpGrid(grid, "grid.cfg")
|
sawine@7
|
67 |
|
sawine@7
|
68 |
def main():
|
sawine@7
|
69 |
#ruleTest()
|
sawine@7
|
70 |
#rule2Test()
|
sawine@7
|
71 |
potentialTest()
|
sawine@7
|
72 |
|
sawine@7
|
73 |
if __name__ == "__main__":
|
sawine@7
|
74 |
main()
|