У меня есть массив 1 и 0, и я хочу удалить и блокировать или 2x2 области, которые все 1.
Я попытался выполнить цикл, как показано в моем коде, но это не сработало.
def removeblocks(maze):
for i in range(len(maze)-1):
for j in range(len(maze)-1):
arg=[]
a=maze[i][j]
b=maze[i+1][j]
c=maze[i][j+1]
d=maze[i+1][j+1]
if a==b==c==d==1:
arg.append((i,j))
arg.append((i+1,j))
arg.append((i,j+1))
arg.append((i+1,j+1))
tempmaze=copy.copy(maze)
while len(arg)>0:
choice=rd.choice(arg)
arg.remove(choice)
tempmaze[choice[0]][choice[1]]=0
if checksolvable(tempmaze):
break
else:
tempmaze[choice[0]][choice[1]]=1
return tempmaze
Код должен изменить это:
1 1
1 1
к этому (вместо этого можно удалить любую из 1):
0 1
1 1
но вместо этого меняются только некоторые блоки, что заставляет меня поверить, что проблема в цикле.