Akurasu | Bonjour,
J'ai un problème avec mon code sur un automate cellulaire, j'ai essayer d'inserer la fonction:
Code :
- for i, j in ((i-1, j), (i, j-1), (i+1, j+1), (i-1, j-1), \
- (i+1, j), (i, j+1), (i+1, j-1), (i-1, j+1)):
- if grid[i%N][j%N]==0:
- count += 1
- return count
|
dans :
Code :
- from random import randrange
- import random
- from copy import deepcopy
- def display(grid):
- for i in range(N):
- for j in range(N):
- if grid[i][j]==0:
- print("*",end="" )
- elif grid[i][j]==1:
- print(".",end="" )
- else:
- print("#",end="" )
- print()
- def init_state(N):
- grid = [ [ randrange(3) for _ in range(N) ] for _ in range(N) ]
-
- if N%2 == 0:
- grid[int(N/2)][int(N/2)] = 1
- else:
- grid[int(N/2 + 1)][int(N/2) + 1] = 1
- return grid
- def next_grid(grid,N):
- new_grid = deepcopy(grid)
- count = 0
- for i in range(N):
- for j in range(N):
- for i, j in ((i-1, j), (i, j-1), (i+1, j+1), (i-1, j-1), \
- (i+1, j), (i, j+1), (i+1, j-1), (i-1, j+1)):
- if grid[i%N][j%N]==0:
- count += 1
- return count
- if grid[i][j] == 0:
- new_grid[i][j] = 1
- elif grid[i][j] == 1:
- new_grid[i][j] = 2
- elif grid[i][j] == 2 and count == 2:
- new_grid[i][j] = 0
- grid[:] = new_grid
- return new_grid
- #programme#
- N=11
- A=init_state(N)
- display(A)
- for t in range(1,6):
- B= next_grid(A,N)
- print("étape n°",t)
- display(B)
|
Mais je comprend pas d'où vient le problème de type. Mais le problème vient de display(B). et j'ai l'erreur:
Code :
- if grid[i][j]==0:
- TypeError: 'int' object is not subscriptable
|
Pouvez-vous m'aider car je sait pas d'où sa peut venir. |