changeset 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
files Life.py ch7ex2.py
diffstat 2 files changed, 16 insertions(+), 5 deletions(-) [+]
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."""
--- a/ch7ex2.py	Thu Jul 25 21:53:44 2013 -0500
+++ b/ch7ex2.py	Wed Jul 31 20:37:12 2013 -0500
@@ -11,14 +11,16 @@
 class RPentomino(Life.Life):
 
     def __init__(self, n):
-        super(RPentomino, self).__init__(n, mode='constant', cval=0, random=False)
+        super(RPentomino, self).__init__(n, mode='constant', cval=0,
+                random=False, show_progress=10)
 
         i, j = n / 2, n / 2
         self.array[i, j] = 1
         self.array[i, j - 1] = 1
-        self.array[i, j + 1] = 1
+        self.array[i + 1, j] = 1
+        self.array[i + 1, j + 1] = 1
         self.array[i - 1, j] = 1
-        self.array[i + 1, j - 1] = 1
+
 
 if __name__ == '__main__':
     life = RPentomino(150)