Алек обнови решението на 22.03.2012 09:57 (преди почти 13 години)
+BOARD_SIZE = 48
+
+def step_board(board):
+ for x in range(1, BOARD_SIZE):
+ for y in range(1, BOARD_SIZE):
+ curr = board[x][y] & 1
+ neighbors = sum((board[x-1][y-1] & 2 == 2, board[x-1][y] & 2 == 2, board[x-1][y+1] & 2 == 2,
+ board[x][y-1] & 2 == 2, board[x][y+1] & 1,
+ board[x+1][y-1] & 1, board[x+1][y] & 1, board[x+1][y+1] & 1))
+ board[x][y] = (2 if curr else 0) + (neighbors == 3 or curr and neighbors == 2)
Не, че искам да се заяждам, но ми се струва, че това изобщо не се държи като играта на живота без да споменавам, че е трудно разбираемо и неспазващо pep8...
*Редакция: нямах много време да погледна кода... всъщност не е толкова трудноразбираем и видях причините за нарушаването на стила... колкото до грешката - май единствено трябва да се увеличи втория аргумент на range-овете с една единица. т.к. в текущото състояние не проверява последните реални ред и колона(47ми от ядрото, но 48ми реално заради 0вата рамка)
За грешката с индексите си прав. Иначе идеята е да не се ползва копие на дъската всеки път, а всички операции да са в един масив.