+ def get_neighbors_i(self, i):
+ if i in self.neighbors_i:
+ return self.neighbors_i[i]
+ pos = YX(i // self.size.x, i % self.size.x)
+ neighbors_pos = self.get_neighbors(pos)
+ neighbors_i = {}
+ for direction in neighbors_pos:
+ pos = neighbors_pos[direction]
+ if pos is None:
+ neighbors_i[direction] = None
+ else:
+ neighbors_i[direction] = pos.y * self.size.x + pos.x
+ self.neighbors_i[i] = neighbors_i
+ return self.neighbors_i[i]
+