Streamlined program interface.
4 import gridmarshal as marshal
8 configs = {rules.Rule1: (((0, 0), 1), ((-1, 0), 1), ((1, 0), 1), ((0, 1), 1),
10 rules.Rule2: (((0, 0), 1), ((-1, 0), 1), ((1, 0), 1), ((0, 1), 1), ((0, -1), 1)),
11 rules.PotentialGrowth: (((0, 0), 4),)}
13 rulemap = {"1": rules.Rule1, "2": rules.Rule2, "3": rules.PotentialGrowth}
15 def main(rule, iterations, dumpfile):
17 for pos, value in configs[type(rule)]:
22 for i in range(iterations):
24 r = grid.width() / 4.0 + grid.height() / 4.0
25 r_ideal = math.sqrt(A / math.pi)
26 A_ideal = r**2 * math.pi
28 pi = (pi + last_pi) / 2.0
30 print "%i %f(%f) %i(%i) %f" % (i, r, r - r_ideal,
32 grid = rule.iterate(grid)
34 marshal.dumpGrid(grid, dumpfile)
36 if __name__ == "__main__":
37 parser = argparse.ArgumentParser(description="cellular automaton.")
38 parser.add_argument("iterations", type=int, help="number of iterations")
39 parser.add_argument("--rule", "-r", default="3")
40 parser.add_argument("--persistent", "-p")
41 args = parser.parse_args()
42 main(rulemap[args.rule](), args.iterations, args.persistent)