Игра Жизнь на Python
Conway's Game of Life (simple version) with detailed debug logs
def print_grid(grid): print("[LOG] Printing current grid state:") for row in grid: print(' '.join(['█' if cell else ' ' for cell in row])) print()
def count_neighbors(grid, i, j): rows, cols = len(grid), len(grid[0]) count = 0 for x in range(max(0, i-1), min(rows, i+2)): for y in range(max(0, j-1), min(cols, j+2)): if (x, y) != (i, j): count += grid[x][y] print(f"[LOG] Cell ({i},{j}) has {count} live neighbors.") return count
def next_gen(grid): rows, cols = len(grid), len(grid[0]) print(f"[LOG] Calculating next generation for a {rows}x{cols} grid.") new_grid = [[0]*cols for _ in range(rows)] for i in range(rows): for j in range(cols): live = count_neighbors(grid, i, j) if grid[i][j]: if live in (2,3): new_grid[i][j] = 1 print(f"[LOG] Cell ({i},{j}) stays alive.") else: print(f"[LOG] Cell ({i},{j}) dies.") else: if live == 3: new_grid[i][j] = 1 print(f"[LOG] Dead cell ({i},{j}) becomes alive.") print("[LOG] Next generation grid created.") return new_grid
Initial pattern (glider)
grid = [ [0,0,1,0,0], [1,0,1,0,0], [0,1,1,0,0], [0,0,0,0,0], [0,0,0,0,0], ]
print("[LOG] Initial grid created:") print_grid(grid) for gen in range(1, 5): print(f"[LOG] --- Generation {gen} ---") grid = next_gen(grid) print(f"[LOG] Generation {gen} result:") print_grid(grid)