title: For loop not working as it should in the simulation
body: <p>Here is a code that I created in python (fairly new to it).</p>
  
  <p>I am trying to make a simulation for biofilms, but before I take it to implementing the actual algorithms (mathematical formulas for growth) and the graphics part i want my code to run in the desired manner. I am facing issues with the for loops in the generation part.</p>
  
  <p>The problem that i am facing is that the growth from generation 1 to 2 ( as per the printed output) is increasing much more than it should. The growth should only go to adjacent rows but in one step it becomes a lot.</p>
  
  <p>There is a matrix on which we call the generate function. Say there are 5 nodes at the start of the loop. Now when we run generate on the first node then lets say 1 node gets added. Now the loop should not run generate on this newly added node in this generation. But it does, which leads to exponential growth. </p>
  
  <p>Please help me identify the problem over here.</p>
  
  <p>The code (in python version 2.7.4):</p>
  
  <pre><code>import math
  from random import choice
  from copy import deepcopy
  
  width=20
  height=20
  
  def checksuround(self,i,j):
      memory=0
      if(i+1&lt;width and j+1&lt;height and j-1&gt;=0 and i-1&gt;=0):
          for m in range(-1,2):
              for n in range(-1,2):
                  if(self[i+m][j+n]==0):
                      memory=1
          if memory==1:
              return 1
          else:
              return 0
  
  #comment
  def add(matrix,m,n,sites):
      count=0
      if(m+1&lt;width and n+1&lt;height and n-1&gt;=0 and m-1&gt;=0):
          for q in range(-1,2):
              for w in range(-1,2):
                  if(matrix[m+q][n+w]==0 and count&lt;sites):
                      matrix[m+q][n+w]='.'
                      count=count+1
  
  
  def generate(substrate,self,i,j):
      if(i+1&lt;width and j+1&lt;height and j-1&gt;=0 and i-1&gt;=0):
          if(substrate[i][j]==1):
              pick=[2,3,4,5,6]
              add(self,i,j,choice(pick))
          else:
              add(self,i,j,1)
  
  print "-----------------------------------------------"
  print "Basic floor for growth"
  grid=[]
  for x in range(width):
      grid.append([])
      for y in range(height):
          grid[x].append(0)
  
  for x in range(width):
      print 
      for y in range(height):
          print grid[x][y],
  
  
  print "-----------------------------------------------"
  print "Substrate matrix (1 represents sites with favorable growth conditions)"
  arr=[0,1,2,3,4,5,6,7]
  substrate=[]
  for x in range(width):
      substrate.append([])
      for y in range(height):
          substrate[x].append(choice(arr))
  
  for x in range(width):
      print 
      for y in range(height):
          print substrate[x][y],
  
  print "-----------------------------------------------"
  
  for x in range(10,12):
      for y in range(10,12):
          grid[x][y]='.'
  
  
  for x in range(width):
      print 
      for y in range(height):
          print grid[x][y],
  
  
  print "-----------------------------------------------"
  generation=5
  undergrid=deepcopy(grid)
  flag=0
  
  for g in range(generation):
      print "generation : ",g
      for x in range(width):
          for y in range(height):
              flag=checksuround(grid,x,y)
              if (grid[x][y]!=0 and flag==1):
                  generate(substrate,undergrid,x,y)
      for x in range(width):
          print 
          for y in range(height):
              print undergrid[x][y],
      grid=undergrid
      print
      print "----------------------------------------------"
  </code></pre>
  
  <p>One output was this: (if the output is not aligned please copy paste the above code and run it, it should work fine)</p>
  
  <pre><code>generation :  0
  
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 . . 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 . . . . 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 . . 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  
  ----------------------------------------------
  
  generation :  1
  
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 . . 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 . . . . . . 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 . . . . . 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 . . . . 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  
  ----------------------------------------------
  
  generation :  2
  
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 . . 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 . . . . . . . . 0 0 0 0 0
  0 0 0 0 0 0 0 0 . . . . . . . 0 0 0 0 0
  0 0 0 0 0 0 0 0 . . . . . . . 0 0 0 0 0
  0 0 0 0 0 0 0 0 . . . . . . . . 0 0 0 0
  0 0 0 0 0 0 0 0 . . . . . . . . . 0 0 0
  0 0 0 0 0 0 0 . . . . . . . . . . 0 0 0
  0 0 0 0 0 0 0 . . . . . . . . . . 0 0 0
  0 0 0 0 0 0 0 . . . . . . . . . . 0 0 0
  0 0 0 0 0 0 . . . . . . . . . . . 0 0 0
  0 0 0 0 0 0 . . . . . . . . . . . 0 0 0
  0 0 0 0 0 0 0 . . . . . . . . . 0 0 0 0
  0 0 0 0 0 0 0 . . . . . 0 0 0 0 0 0 0 0
  
  ----------------------------------------------
  
  generation :  3
  
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 . . 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 . . . . . . . . . . 0 0 0 0
  0 0 0 0 0 0 0 . . . . . . . . . 0 0 0 0
  0 0 0 0 0 0 0 . . . . . . . . . 0 0 0 0
  0 0 0 0 0 0 0 . . . . . . . . . . 0 0 0
  0 0 0 0 0 0 0 . . . . . . . . . . . . 0
  0 0 0 0 0 0 . . . . . . . . . . . . . 0
  0 0 0 0 0 . . . . . . . . . . . . . . 0
  0 0 0 0 0 . . . . . . . . . . . . . . 0
  0 0 0 0 0 . . . . . . . . . . . . . . 0
  0 0 0 0 0 . . . . . . . . . . . . . . .
  0 0 0 0 0 . . . . . . . . . . . . . . .
  0 0 0 0 0 0 . . . . . . . . . . . . . 0
  0 0 0 0 0 0 . . . . . . . . . . . . . 0
  
  ----------------------------------------------
  
  generation :  4
  
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 . . . . 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 . . . . . . . . . . . . 0 0 0
  0 0 0 0 0 . . . . . . . . . . . . 0 0 0
  0 0 0 0 0 0 . . . . . . . . . . . 0 0 0
  0 0 0 0 0 0 . . . . . . . . . . . . 0 0
  0 0 0 0 0 . . . . . . . . . . . . . . .
  0 0 0 0 0 . . . . . . . . . . . . . . .
  0 0 0 0 . . . . . . . . . . . . . . . .
  0 0 0 0 . . . . . . . . . . . . . . . .
  0 0 0 0 . . . . . . . . . . . . . . . .
  0 0 0 0 . . . . . . . . . . . . . . . .
  0 0 0 0 . . . . . . . . . . . . . . . .
  0 0 0 0 . . . . . . . . . . . . . . . .
  0 0 0 0 0 . . . . . . . . . . . . . . .
  0 0 0 0 0 . . . . . . . . . . . . . . .
  
  ----------------------------------------------
  </code></pre>