我有一个1和0的数组,我想删除并阻塞全为1的2x2区域。
我尝试按代码中所示进行循环,但这不起作用。
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
但是相反,仅更改了一些块,这使我相信循环是问题所在。