Итак, я должен сделать игры Конвея жизни с этими 5 правил ниже:Конвея жизни не изменяя ничего
- Клетка, которая имеет меньше двух живых соседей умирает
- клетки, которая более 3 живых соседей умирает
- клетка, которая умерла и имеет ровно три живых соседей оживает
- Все краевые клетки остаться 0
Все остальные клетки сохраняют свое состояние
Пример:
>>> A = [ [0,0,0,0,0], [0,0,1,0,0], [0,0,1,0,0], [0,0,1,0,0], [0,0,0,0,0]] >>> printBoard(A) 00000 00100 00100 00100 00000 >>> A2 = next_life_generation(A) >>> printBoard(A2) 00000 00000 01110 00000 00000 >>> A3 = next_life_generation(A2) >>> printBoard(A3) 00000 00100 00100 00100 00000
и так далее ....
Обратите внимание, что next_life_generation(A)
возвращает новую доску, так что я могу держать повторное связывание А каждое последующее поколение. Это мой код до сих пор:
import sys
def printBoard(A):
""" this function prints the 2d list-of-lists
A without spaces (using sys.stdout.write)
"""
for row in A:
for col in row:
sys.stdout.write(str(col))
sys.stdout.write('\n')
def countNeighbors(row, col, A):
count = 0
for row in range(1, len(A) - 1):
for col in range(1, len(A) - 1):
if A[row][col] == 1:
count += 1
return count
def next_life_generation(A):
for row in range(1, len(A) - 1):
for col in range(1, len(A) - 1):
if A[row][col] == 0 and countNeighbors(row, col, A) == 3:
A[row][col] = 1
if countNeighbors(row, col, A) < 2:
A[row][col] = 0
elif countNeighbors(row, col, A) > 3:
A[row][col] = 0
return A
Проблема, которую я имею, что мой код не изменяет все, что он просто печатает то же самое:
>>> A = [ [0,0,0,0,0],
[0,0,1,0,0],
[0,0,1,0,0],
[0,0,1,0,0],
[0,0,0,0,0]]
>>> printBoard(A)
00000
00100
00100
00100
00000
>>> A2=next_life_generation(A)
>>> printBoard(A2)
00000
00100
00100
00100
00000
Я был бы очень признателен кто-то помочь!
http://pythontutor.com –
Что такое printBoard (A)? Я не вижу такой функции в вашем коде. –
Пожалуйста, предоставьте [mcve] –