Итак, у меня есть список в виде
[['0','0','0','0','0'],
['0','0','0','0','0'],
['1','0','0','0','0'],
['1','0','0','0','0'],
['0','0','0','0','0']]
, и я хочу, чтобы значение «0», окружающее «1», изменялось на «1» после шага, как это.
[['0','0','0','0','0'],
['1','0','0','0','0'],
['1','1','0','0','0'],
['1','1','0','0','0'],
['1','0','0','0','0']]
и после достаточного количества шагов все «0» становятся «1».
Код, который я имею, выглядит следующим образом
def simulate_bushfire(list, steps):
for _ in range(steps):# iterates through the number of steps
for y in range(len(initial_bushfire[0])):
for x in range(len(initial_bushfire)): #for all y coordinates possible in the file
if initial_bushfire[y][x] =='1':# looks for cells that has '1' in it
for a in range(x-1,x+2): #looks at the neighbour of the cell that has'1' in it (x coordinates)
for b in range(y-1,y+2):#looks at the neighbour of the cell that has'1' in it (y coordinates)
if a<0 or b<0 or b>=len(initial_bushfire[0]) or a>=len(initial_bushfire):# if neighbour is outside the border of the map,
#code will ignore to avoid errors like list out of range
continue
if initial_bushfire[b][a]=='':# if there's an empty string (no tree)
continue # ignore this as well (no trees to burn )
if initial_bushfire[b][a]=='0': #if there is a '0' in the file (there is a tree)
initial_bushfire[b][a]='1'# change the '0' to a '1' (tree on fire)
return (initial_bushfire)
, но кажется, что «спред» слишком велик для 1 шага.Кажется, я не понимаю, почему, но я думаю, что это из-за этой строки
for a in range(x-1,x+2): #looks at the neighbour of the cell that has'1' in it (x coordinates)
for b in range(y-1,y+2):#looks at the neighbour of the cell that has'1' in it (y coordinates)
Буду очень признателен, если кто-нибудь поможет мне с этим кодом.