Эдэльвен (back_to_elfing) wrote,
Эдэльвен
back_to_elfing

Итак, у меня есть код Жизни, который работает. По вертикали даже налажена тороидальность, по горизонтали - отступ от края в одну клеточку. Я могу награфоманить полную тороидальность, но это будет рекурсия на рекурсии, а проще говоря - кривоватые костыли.
Какие могут быть более элегантные решения этой задачи?

W=[[0,0,0,1,0],[0,1,0,0,0],[0,0,1,1,0],[0,1,1,0,0],[0,0,1,0,0]]
doit=1

while doit>0:
 M=[row[:] for row in W]

 for i in range(0,len(W)):
     for j in range(1,len(W[i])-1):
        if i==0:                                                                  
            a=int(W[len(W)-1][j-1]+W[i][j-1]+W[i+1][j-1]+
            W[len(W)-1][j]+W[i+1][j]+
            W[len(W)-1][j+1]+W[i][j+1]+W[i+1][j+1])            
        elif i< len(W)-1:
            a=int(W[i-1][j-1]+W[i][j-1]+W[i+1][j-1]+
            W[i-1][j]+W[i+1][j]+
            W[i-1][j+1]+W[i][j+1]+W[i+1][j+1])
        else:
            a=int(W[i-1][j-1]+W[i][j-1]+W[0][j-1]+
            W[i-1][j]+W[0][j]+
            W[i-1][j+1]+W[i][j+1]+W[0][j+1])
        
        if a==3:
            M[i][j]=1
        if a>3 or a< 2:
            M[i][j]=0

 for i in range(len(M)):
    for j in range(len(M[i])):
        print(M[i][j], end=' ')
    print()
 W=[row[:] for row in M]
    
 doit = int(input ("Run again? 1/0 "))

Tags: бот, рython
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 12 comments