Python - Problema al hacer el juego de la vida

 
Vista:

Problema al hacer el juego de la vida

Publicado por Astie (1 intervención) el 12/04/2020 20:56:31
Hola a todos! Ando haciendo el juego de la vida y tengo un problema que no logro solucionar.
Cuando ejecuto la función Turno no sé por qué se modifica la matriz A en lugar de la matriz Auxiliar y no entiendo por qué. Si se quita el comentario del print(A) dentro de la función turno podemos ver que la matriz va cambiando en cada iteración del bucle cuando la matriz A debería ser la misma. ¿Dónde está el error?
Un saludo y muchas gracias.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import numpy as np
def inicializar_tablero (m,n):
    A = np.zeros((m,n))
    print("introduzca las células que desee. Cuando quiera parar pulse cualquier tecla que no sea un número.")
    i=0
    while i==0 :
        try:
            x = int(input("Introduce la fila donde quieres una celula: "))
            y = int(input("Introduce la columna donde quieres una celula: "))
            A[x-1][y-1] = 1
        except IndexError:
            print("La casilla que ha elegido para la célula no existe.")
 
        except ValueError:
            print("Celulas intrducidas correctamente.")
            return A
 
    return A
def contar_celulas (A,m,n):
    count = 0
    for i in [-1,0,1]:
        for j in [-1,0,1]:
             if i != 0 or j != 0:
                if (m+i>=0 and n+j>=0 ) and (m+i<=len(A)-1 and n+j<=len(A[1])-1):
                    #pint(m+i,n+j)
                    if A[m+i][n+j]==1:
                        count+= 1
 
 
 
    return count
 
 
 
def turno (A):
    Aux=A
    for i in range(len(A)):
        for j in range(len(A[1])):
            n=contar_celulas(A,i,j)
            #print(i,j,n)
            #print(A)
 
            if A[i][j] == 0 and n==3:
                Aux[i][j]=1
            elif A[i][j] == 1 and (n<2 or n>3):
                Aux[i][j]=0
 
        #print("\n")
 
    return Aux
Tablero1=[
 [1, 0, 0, 0, 0],
 [0, 1, 1, 0, 0],
 [1, 1, 0, 0, 0,],
 [0, 0, 0, 0, 0,],
 [0, 0, 0, 0, 0,]]
 
print(turno(Tablero1))
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder