def initial_board(row, col, array):
firstList = [[0] * col for i in range(row)]
for i in firstList:
i.append(-1)
i.insert(0,-1)
firstList.insert(0, [-1] * (col + 2))
firstList.append([-1] * (col + 2))
while True:
coordinateInput = input('Enter the coordinates of a seed cell as \"r c\": ')
if coordinateInput == '':
break
point = coordinateInput.split(' ', 1)
row = int(point[0])
col = int(point[1])
firstList[row][col] = 1
return firstList
def next_board(row, col, current, new):
for i in range(1, row - 1):
for j in range(1, col - 1):
new[i][j] = live_conditions(i, j, current)
def live_conditions(x, y, array):
cellCount = 0
for j in range(y - 1, y + 1):
for i in range(x - 1, x + 1):
if not(i == x and j == y):
if array[i][j] != -1:
cellCount += array[i][j]
if array[x][y] == 1 and cellCount < 2:
return 0
if array[x][y] == 1 and cellCount > 3:
return 0
if array[x][y] == 0 and cellCount == 3:
return 1
else:
return array[x][y]
def print_board(row, col, array):
for i in range(row + 2):
for j in range(col + 2):
if array[i][j] == 1:
print('*', end =' ')
else:
print(' ', end =' ')
print()
def game_board():
while True:
try:
row = int(input('What size board? '))
if row > 0:
col = row
break
else:
continue
except ValueError or dimension <= 0:
pass
firstList = []
nextlist = []
firstList = initial_board(row, col, firstList)
nextList = [row[:] for row in firstList]
print()
generations = int(input('How many generations?: '))
for gen in range(generations):
print('Gen: ', gen)
print_board(row, col, firstList)
next_board(row, col, firstList, nextList)
firstList, nextList = nextList, firstList
game_board()
Однако, когда я запускаю его с входом 5 5 я получаю это:я кодирование игры Конвея жизни в питоне, и мой код до сих пор это:
What size board? 5
Enter the coordinates of a seed cell as "r c": 5 5
Enter the coordinates of a seed cell as "r c":
How many generations?: 3
Gen: 0
*
Gen: 1
*
Gen: 2
*
Я чувствую как проблема в моей функции live_conditions, с cellCount не работает должным образом. Что я делаю не так?
код не копируется. –
Вставка всей вашей кодовой базы здесь не приветствуется - образцы кода должны быть минимальными, необходимыми для воспроизведения вашей непосредственной проблемы; если вы не указали * свою непосредственную проблему, вы еще не готовы задать вопрос о StackOverflow. См. Также http://sscce.org/ и http://stackoverflow.com/help/mcve. –