-----Original Message----- >From: Matt Smith <[EMAIL PROTECTED]> >Sent: May 25, 2007 4:31 PM >To: Python Tutor <[email protected]> >Subject: [Tutor] Still having trouble with my game of life algorithm > >Hi, > >First of all, thanks to everyone who helped with my last post >(http://mail.python.org/pipermail/tutor/2007-May/054360.html). I have >re-written the function that applies the rules but it still doesn't >return the expected result. I have been through it and corrected a >couple of bugs bet as far as I can tell it should return a matrix that >has had the rules of Conway's game of life >(http://en.wikipedia.org/wiki/Conway%27s_game_of_life) applied. Here is >my function: > >def update_matrix(matrix): > matrix_updated = matrix ># Perform check for each value in the matrix > for x in range(len(matrix[0])): > for y in range(len(matrix)): > neighbour_count = 0 > for n in (x-1, x, x+1): > for m in (y-1, y, y+1): > try: > if matrix[m][n]: > if (n,m) != (x,y): > neighbour_count = neighbour_count + 1 > except IndexError: > pass ># Apply game of life rules to each item in the matrix > if neighbour_count < 2: > matrix_updated[y][x] = 0 > elif neighbour_count > 3: > matrix_updated[y][x] = 0 > elif neighbour_count == 3: > matrix_updated[y][x] = 1 ># No need to change value if neighbour count == 2 > return matrix_updated > >I have also attached the full program and the input file that I am using >for testing in case anyone is interested. The program does use curses to >display the board so I guess it won't be any good for Windows users. > >I hope someone can see where I am going wrong here. > >Thanks, > >Matt
I am NOT an expert, and I have not studied your code very carefully, but I had a thought. If I understand Conway's rules, if an empty cell has exactly two neighbors, a new "live" cell is spawned. I don't see that you have done this, but it may be something subtle that I missed. ken oliver _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
