0

我正在寻找某种公式,对于每个ifrom 0to7将返回一个 x 和 ay 偏移到某个方向上的相邻单元格。这个想法是,如果我在一个单元格网格中,并且我想扫描周围的单元格,我不必制作一棵圣诞树的if语句(比算术慢得多)。请注意,此扫描包括对角线。我一直在网上寻找类似的东西,但没有运气。

只要每个输入产生不同的输出,方向就可以按任何顺序输出,x 和 y 只能等于 1、0 或 -1,并且没有一个输出是(0, 0)

4

2 回答 2

1

假设这x,y是原始坐标并且nx,ny将是当前邻居:

for (int cx = -1; cx <= 1; ++cx)
  for (int cy = -1; cy <= 1; ++cy)
    if (cx != 0 && cy != 0)
    {
      int nx = x + cx;
      int ny = y + cy;

      // do whatever you like
    }

或者只使用常量:

int delta[8][2] = {{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}}
于 2012-11-05T04:24:47.643 回答
0
for i in range(3):
    for j in range(3):
        if (i-1) or (j-1):
            print i-1,j-1

-1 -1
-1 0
-1 1
0 -1
0 1
1 -1
1 0
1 1

这行得通吗?

于 2012-11-05T04:35:09.533 回答