import random
import os
import time

random.seed(8687)

def printBoard():
    for i in range(y):
        s = ""
        for j in range(x):
            if board[i][j] == 0:
                s+="."
            else:
                s+="O"
        print(s)

board = []

x=20
y=10
startLive = 20

#Generacja planszy
for i in range(y):
    board.append([])
    for _ in range(x):
        board[i].append(0)
#Losowanie komórek
liveCount = 0
while(liveCount!=startLive):
    i = random.randint(0,y-1)
    j = random.randint(0,x-1)
    if(board[i][j]==0):
        board[i][j]=1
        liveCount+=1

while True:
    printBoard()
    time.sleep(1)
    os.system("cls")

    new_board=[row[:] for row in board]
    for i in range(y):
        for j in range(x):
            neighbors = 0
            directions = [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)]
            for dx, dy in directions:
                ni,nj = i+dx, j+dy
                if 0<=ni<y and 0<=nj<x and board[ni][nj]==1:
                    neighbors+=1
            if board[i][j]==0 and neighbors==3:
                new_board[i][j]=1
            elif board[i][j]==1 and neighbors not in [2,3]:
                new_board[i][j]=0
    board = new_board