multidimensional-array - 如何在菱形等距图中从后到前迭代

标签 multidimensional-array iteration pseudocode isometric

想象一个菱形等距 map ,它基本上是一个具有 (x,y) 坐标和顶部单元格作为原点的 2D 数组,如单元格中标记的:

Diamond

我想按以下顺序从后到前迭代这些单元格:

 iteration order

以这种方式循环遍历未知同边 map 的算法是什么?

预期输出:[0,0]、[0,1]、[1,0]、[0,2]、[1,1]、[2,0]、[0,3]等

最佳答案

python伪代码:

def iterate_cells(n):
    for i in range(n):
        for j in range(i+1):
            yield (j, i-j)
    for i in range(1, n+1):
        for j in range(n - i):
            yield(i+j, n-j-1)

输出:

In [119]: list(iterate_cells(5))
Out[119]: 
[(0, 0),
 (0, 1),
 (1, 0),
 (0, 2),
 (1, 1),
 (2, 0),
 (0, 3),
 (1, 2),
 (2, 1),
 (3, 0),
 (0, 4),
 (1, 3),
 (2, 2),
 (3, 1),
 (4, 0),
 (1, 4),
 (2, 3),
 (3, 2),
 (4, 1),
 (2, 4),
 (3, 3),
 (4, 2),
 (3, 4),
 (4, 3),
 (4, 4)]

关于multidimensional-array - 如何在菱形等距图中从后到前迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9018988/

相关文章:

algorithm - 变体调度算法

php - 为什么我在以下场景中没有获得更新的数组?

arrays - 有效二维数组的delta数据结构

Python函数式迭代算法?

c# - 将数据插入 Excel

algorithm - 使用指针和链表 : how to iterate over a linked list, 更改和比较键

多维动态数组中的 C++ 对象构造

javascript - 使用 Knockout 'foreach' 循环遍历多维数组

javascript - 将一个对象合并到另一个对象的最佳方法(不覆盖)

java - 双曲曲面分割 Java 库