【问题标题】:2D Grid Direction Iteration二维网格方向迭代
【发布时间】:2012-11-05 04:19:43
【问题描述】:

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

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

【问题讨论】:

    标签: algorithm grid iteration direction


    【解决方案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}}
    

    【讨论】:

    • 我真的很喜欢常量的想法,实际上。我没有想到。谢谢!该死的回答接受等待时间......
    • 很好的答案 @Jack 你知道,如果两个人独立想出同样的事情,这是一个很好的答案。
    【解决方案2】:
    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-29
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多