Added header.
2 from caugrid import Grid
6 def iterate(self, oldgrid):
7 grid = copy.deepcopy(oldgrid)
8 for x in xrange(oldgrid.minx - 1, oldgrid.maxx + 2):
9 for y in xrange(oldgrid.miny - 1, oldgrid.maxy + 2):
10 #print x, y, self.neighbours(oldgrid, x, y)
11 n = self.neighbours(oldgrid, (x, y))
16 def neighbours(self, grid, (testx, testy)):
18 #print "testing ", testx, testy
19 for x in range(testx - 1, testx + 2):
20 for y in range(testy - 1, testy + 2):
21 if (x, y) in grid.cells:
29 def iterate(self, oldgrid):
30 grid = copy.deepcopy(oldgrid)
31 for x in xrange(oldgrid.minx - 1, oldgrid.maxx + 2):
32 for y in xrange(oldgrid.miny, oldgrid.maxy + 2):
33 #print "testing ", x, y,
34 if (x+1, y) in oldgrid.cells or (x, y-1) in oldgrid.cells:
39 import caumarshal as marshal
41 class PotentialGrowth(object):
46 def iterate(self, oldgrid):
47 grid = copy.deepcopy(oldgrid)
48 for cell in oldgrid.cells.iteritems():
52 new_pos, new_value = self.grow(grid, pos)
53 grid.set(new_pos, new_value)
54 grid.set(pos, value - 1)
57 def grow(self, grid, (x, y)):
58 neighbours = [(x-1, y), (x, y+1), (x+1, y), (x, y-1)]
59 neighbours = [n for n in neighbours if n not in grid.cells]
61 pos = random.choice(neighbours)
65 value = grid.cells[pos]
75 grid.set((0, 1)).set((1, 0)).set((0, -1)).set((-1, 0))
78 print "iteration radius(diff) area(diff) pi"
80 iterations = int(sys.argv[1])
82 for i in range(iterations):
84 r = grid.width() / 2.0
85 r_ideal = math.sqrt(A / math.pi)
86 A_ideal = r**2 * math.pi
88 print "%i %f(%f) %i(%i) %f" % (i, r, r - r_ideal,
91 grid = rule.iterate(grid)
92 marshal.dumpGrid(grid, "grid.cfg")
98 grid.set((0, 0)).set((-1, 0)).set((0, 1))
101 iterations = int(sys.argv[1])
103 for i in range(iterations):
104 a = (float(len(grid)) - grid.width()) * 4.0
105 pi = 1.0 / ((grid.width()-1)**2 / ((a + olda) / 2.0))
106 print i, grid.width(), len(grid), pi
107 grid = rule.iterate(grid)
109 marshal.dumpGrid(grid, "grid.cfg")
112 rule = PotentialGrowth()
116 iterations = int(sys.argv[1])
118 for i in range(iterations):
120 r = grid.width() / 4.0 + grid.height() / 4.0
121 r_ideal = math.sqrt(A / math.pi)
122 A_ideal = r**2 * math.pi
124 print "%i %f(%f) %i(%i) %f" % (i, r, r - r_ideal,
127 grid = rule.iterate(grid)
128 marshal.dumpGrid(grid, "grid.cfg")
135 if __name__ == "__main__":