- Z[i0 - 1 : i0 + 2, j0 - 1 : j0 + 2] = 1
-
- nb = 9
-
- for q in k:
- i, j = q % self.height + 1, q // self.height + 1
-
- if Z[i, j] == 0:
- r, s, t, u, v, w, x, y = (
- Z[i - 1, j],
- Z[i - 1, j + 1],
- Z[i, j + 1],
- Z[i + 1, j + 1],
- Z[i + 1, j],
- Z[i + 1, j - 1],
- Z[i, j - 1],
- Z[i - 1, j - 1],
- )
-
- if (
- (nb < 16 or r + s + t + u + v + w + x + y > 0)
- and (s == 0 or r + t > 0)
- and (u == 0 or t + v > 0)
- and (w == 0 or x + v > 0)
- and (y == 0 or x + r > 0)
- ):
- # if r+s+t+u+v+w+x+y==0:
- Z[i, j] = 1
- nb += 1
-
- if nb == self.height * self.width // 2:
- break
-
- if nb == self.height * self.width // 2:
- break
-
- M = Z.clone()
- Z[i0, j0] = 2
- X[...] = (Z[1:-1, 1:-1] == 1) * c[0] + (Z[1:-1, 1:-1] == 2) * c[1]