Как искать один 2D массив для другого? - PullRequest
0 голосов
/ 06 июля 2019

У меня есть массив 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

но вместо этого меняются только некоторые блоки, что заставляет меня поверить, что проблема в цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...