1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/cau/automat.py Thu Dec 30 18:31:19 2010 +0100
1.3 @@ -0,0 +1,74 @@
1.4 +import sys
1.5 +import math
1.6 +import rules
1.7 +import gridmarshal as marshal
1.8 +from grid import Grid
1.9 +
1.10 +def ruleTest():
1.11 + rule = rules.Rule()
1.12 + grid = Grid()
1.13 + grid.set((0, 0))
1.14 + grid.set((0, 1)).set((1, 0)).set((0, -1)).set((-1, 0))
1.15 +
1.16 +
1.17 + print "iteration radius(diff) area(diff) pi"
1.18 +
1.19 + iterations = int(sys.argv[1])
1.20 +
1.21 + for i in range(iterations):
1.22 + A = len(grid)
1.23 + r = grid.width() / 2.0
1.24 + r_ideal = math.sqrt(A / math.pi)
1.25 + A_ideal = r**2 * math.pi
1.26 + pi = A / r**2
1.27 + print "%i %f(%f) %i(%i) %f" % (i, r, r - r_ideal,
1.28 + A, A - A_ideal, pi)
1.29 +
1.30 + grid = rule.iterate(grid)
1.31 + marshal.dumpGrid(grid, "grid.cfg")
1.32 + #print
1.33 +
1.34 +def rule2Test():
1.35 + rule = rules.Rule2()
1.36 + grid = Grid()
1.37 + grid.set((0, 0)).set((-1, 0)).set((0, 1))
1.38 + olda = 1
1.39 +
1.40 + iterations = int(sys.argv[1])
1.41 +
1.42 + for i in range(iterations):
1.43 + a = (float(len(grid)) - grid.width()) * 4.0
1.44 + pi = 1.0 / ((grid.width()-1)**2 / ((a + olda) / 2.0))
1.45 + print i, grid.width(), len(grid), pi
1.46 + grid = rule.iterate(grid)
1.47 + olda = a
1.48 + marshal.dumpGrid(grid, "grid.cfg")
1.49 +
1.50 +def potentialTest():
1.51 + rule = rules.PotentialGrowth()
1.52 + grid = Grid()
1.53 + grid.set((0, 0), 4)
1.54 +
1.55 + iterations = int(sys.argv[1])
1.56 + last_pi = 3.0
1.57 + for i in range(iterations):
1.58 + A = len(grid)
1.59 + r = grid.width() / 4.0 + grid.height() / 4.0
1.60 + r_ideal = math.sqrt(A / math.pi)
1.61 + A_ideal = r**2 * math.pi
1.62 + pi = A / r**2
1.63 + pi = (pi + last_pi) / 2.0
1.64 + last_pi = pi
1.65 + print "%i %f(%f) %i(%i) %f" % (i, r, r - r_ideal,
1.66 + A, A - A_ideal, pi)
1.67 +
1.68 + grid = rule.iterate(grid)
1.69 + marshal.dumpGrid(grid, "grid.cfg")
1.70 +
1.71 +def main():
1.72 + #ruleTest()
1.73 + #rule2Test()
1.74 + potentialTest()
1.75 +
1.76 +if __name__ == "__main__":
1.77 + main()