cau/automat.py
author Eugen Sawin <sawine@me73.com>
Thu, 30 Dec 2010 18:31:19 +0100
changeset 7 95ea605276a3
child 8 0db344245ac2
permissions -rw-r--r--
Moved cau to cau.
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()