Best Pi approximation so far.
2 def __init__(self, value):
10 def iterate(grid, rule):
11 expanded = [Cell(False), Cell(False)]
13 expanded.extend([Cell(False), Cell(False)])
15 for i in xrange(len(expanded)-2):
16 triple = expanded[i:i+3]
17 #print [t.value for t in triple]
19 if triple[0].value and triple[1].value and triple[2].value:
20 new_grid.append(Cell(rule[7]))
21 elif triple[0].value and triple[1].value:
22 new_grid.append(Cell(rule[6]))
23 elif triple[0].value and triple[2].value:
24 new_grid.append(Cell(rule[5]))
26 new_grid.append(Cell(rule[4]))
27 elif triple[1].value and triple[2].value:
28 new_grid.append(Cell(rule[3]))
30 new_grid.append(Cell(rule[2]))
32 new_grid.append(Cell(rule[1]))
34 new_grid.append(Cell(rule[0]))
37 def show(grid, max_cells):
39 padding_left = int(0.5 + max_cells - len(grid)) / 2
40 padding_right = (max_cells - len(grid)) / 2
41 for i in xrange(padding_left):
42 sys.stdout.write(chr(178))
44 sys.stdout.write(str(cell))
45 for i in xrange(padding_right):
46 sys.stdout.write(chr(178))
53 rule.append(v - v/2*2)
61 max_cells = max_iter * 2 + 1
66 for i in range(max_iter):
68 grid = iterate(grid, rule)
71 if __name__ == "__main__":