[Tutor] Still having trouble with my game of life algorithm

Ken Oliver ksterling at mindspring.com
Sat May 26 00:23:54 CEST 2007

-----Original Message-----
>From: Matt Smith <matt at mattanddawn.orangehome.co.uk>
>Sent: May 25, 2007 4:31 PM
>To: Python Tutor <tutor at python.org>
>Subject: [Tutor] Still having trouble with my game of life algorithm
>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.

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

More information about the Tutor mailing list