+ while True:
+ for _ in range(self.height * self.width):
+ i = torch.randint(self.height, (1,))
+ j = torch.randint(self.width, (1,))
+ v = torch.randint(2, (2,))
+ vi = v[0] * (v[1] * 2 - 1)
+ vj = (1 - v[0]) * (v[1] * 2 - 1)
+ if (
+ i + vi >= 0
+ and i + vi < self.height
+ and j + vj >= 0
+ and j + vj < self.width
+ and result[n, 0, i, j] == self.token_conductor
+ and result[n, 0, i + vi, j + vj] == self.token_conductor
+ ):
+ result[n, 0, i, j] = self.token_head
+ result[n, 0, i + vi, j + vj] = self.token_tail
+ break
+
+ # if torch.rand(1) < 0.75:
+ break
+