1 2 3
4 5 6
7 8 9
这是我的正常数组,但我需要对角线这样做
1 2 4
3 5 7
6 8 9
这是让它工作的非常愚蠢的方法,但即使它不起作用,因为我无法找到第二列元素.
for (i = 0; i < arr.length; ++i) {
    for (n = 0; n < arr[0].length; ++n) {
        if (i == 0 && n == 0){
            arr[i][n] = 0;
        } else if (i == 0 && n == 1) {
            arr[i][n] = 2;
        } else if (i == 1 && n == 0) {
            arr[i][n] = 3;
        } else if …我需要在这里完成同样的事情,但是要使用任何矩阵,而不仅仅是方形矩阵.此外,遍历的方向需要相反.我试着编辑我在那里找到的代码,但无法弄明白.
谢谢.
我正在构建一个类似热图的矩形阵列接口,我希望"热"位置位于数组的左上角,而"冷"位置位于右下角.因此,我需要一个对角填充的数组,如下所示:
    0    1    2    3
  |----|----|----|----|
0 | 0  | 2  | 5  | 8  |
  |----|----|----|----|
1 | 1  | 4  | 7  | 10 |
  |----|----|----|----|
2 | 3  | 6  | 9  | 11 |
  |----|----|----|----|
所以实际上,我需要一个函数f(x,y)
f(0,0) = 0
f(2,1) = 7
f(1,2) = 6
f(3,2) = 11
(或者,当然,类似的函数f(n)其中f(7)= 10,f(9)= 6等).
所以我有一个 4x4 矩阵,如下所示
 |0 1 2 3
-+-------
0|0 1 3 6
1|2 4 7 a
2|5 8 b d
3|9 c e f
我按照其中的十六进制字符指定的顺序遍历它。所以从 (0, 0) 开始,然后是 (1, 0)、(0, 1)、(2, 0)、(1, 1)、(0, 2)...
所以这是代码:
def diagonal(n):
    for a in range(n):
        for b in range(a + 1):
            yield a - b, b
    for a in range(n - 1):
        for b in range(n - a - 1):
            yield n - b - 1, b + 1 + a
迭代此给出
for x, …