[Tutor] Game of python, help please.

bob gailer bgailer at gmail.com
Wed Apr 18 18:53:33 CEST 2012


On 4/17/2012 2:23 PM, leo degon wrote:

 > Ok so I've done a bit of work on the program and rewrote it. I tried 
to take everyones advice. I've used more functions,
 > I've made it so that it is a list of lists each containing an integer 
instead of another list with a single entry.

I'm glad to see you using some of my ideas!

 > Im am having problems thinking of how to simply and elegantly 
calculate the surrounding cells.
 > I could brute force it as i did originally, but I'd like some 
pointers of how to avoid that.
 > As of now, the script is finished for that 'small' detail. I have it 
so that instead of actually calculating the surrounding cells,
 >  that functions says that all the cells on the board are surrounding 
by three cells.
 > Therefore setting the entire board alive after the turn zero. I am 
still trying to include three different versions of the bounadry conditions.
 >Boundary conditions, what happens when a cell on the edge of the board 
tries to calculate the number of surrounding live cells.
 > Dead- Those nonexistent cells add nothing.
 > Live-Those nonexistent cells add one per cell. So add 5 to the 
corners, and one to edges.
 > Bound- The dimensions are bound. So you get to the end and loop around.

[snip]

I again recommend you add extra rows and columns around the space so you 
always use one formula for surround.

For dead initialize the extra cells to 0
For live initialize the extra cells to 1
For bound - every time you change a boundary cell make the same change 
to the corresponding extra cell.

I hope that makes sense. Does it?

Also recall my condensed way of summing surrounding cells. I realize I 
made a mistake in my original proposal - in that it counted the cell 
itself as well as the neighbors. Easy to fix.

Originally I suggested:
for r in range(1,x+1):
   for c in range1,(y+1):
     surrounding = sum([sum(space[r+z][c-1:c+2]) for z in(-1,0,1)])

New suggestion:
def determinelife(surronding,space,i,j):
   return sum(space[i-1][j-1:j+2]) + sum(space[i][j-1:j+2:2]) + 
sum(space[i+1][j-1:j+2])

HTH


-- 
Bob Gailer
919-636-4239
Chapel Hill NC



More information about the Tutor mailing list