diff Life.py @ 48:98eb01502cf5 tip

Follow up to last commit. Re-orient the r-pentomino. Added progress display.
author Brian Neal <bgneal@gmail.com>
date Wed, 31 Jul 2013 20:37:12 -0500
parents 2b0e229e163c
children
line wrap: on
line diff
--- a/Life.py	Thu Jul 25 21:53:44 2013 -0500
+++ b/Life.py	Wed Jul 31 20:37:12 2013 -0500
@@ -25,7 +25,8 @@
     n:     the number of rows and columns
     """
 
-    def __init__(self, n, mode='wrap', cval=0.0, random=False):
+    def __init__(self, n, mode='wrap', cval=0.0, random=False,
+                    show_progress=None):
         """Attributes:
         n:      number of rows and columns
         mode:   how border conditions are handled
@@ -35,6 +36,9 @@
         self.n = n
         self.mode = mode
         self.cval = cval
+        self.show_progress = show_progress
+        self.steps = 0
+
         if random:
             self.array = numpy.random.random_integers(0, 1, (n, n))
         else:
@@ -51,7 +55,8 @@
 
     def loop(self, steps=1):
         """Executes the given number of time steps."""
-        [self.step() for i in xrange(steps)]
+        for i in xrange(steps):
+            self.step()
 
     def step(self):
         """Executes one time step."""
@@ -63,6 +68,10 @@
         boolean = (con==3) | (con==12) | (con==13)
         self.array = numpy.int8(boolean)
 
+        self.steps += 1
+        if self.show_progress and self.steps % self.show_progress == 0:
+            print self.steps
+
 
 class LifeViewer(object):
     """Generates an animated view of the grid."""