Arrays 阵列处理、形状

Arrays 阵列处理、形状,arrays,drawing,Arrays,Drawing,我有一个正方形的2d值数组,其中每一行都是相同的,每一行的每个元素都比最后一行大一个。例如: 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 我想过滤它们,这样我就可以制作钻石了: 1 1 2 3 1 2 3 4 5 1 2 3 4 5 6 7 1 2 3 4 5

我有一个正方形的2d值数组,其中每一行都是相同的,每一行的每个元素都比最后一行大一个。例如:

1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
我想过滤它们,这样我就可以制作钻石了:

          1
        1 2 3
      1 2 3 4 5
    1 2 3 4 5 6 7
      1 2 3 4 5
        1 2 3
          1
请注意数组的第一部分是如何使用的,无论该行上要打印多少个元素。而且,间距也不重要。我把它们隔开以显示钻石


我知道如何使用j-I过滤右上角的块,假设您已经找到并存储了正方形边的长度,那么您可以使用下面的内容。然而,如果你的正方形是等长的,那么它就不起作用了。用这种方法,你不能从等长的正方形中产生钻石

以下是伪代码,因此需要根据您的语言对其进行调整。我还使用了0索引数组,假定square是2D数组

for (i=0, i<length, i++)
{
    for (j=0, j<Length, j++)
    {
        if (i < length/2)
        {
            if (j < length/2 AND j <= i)
                print square[i][j]
            }
        }
        else
        {
            if (j < length/2 AND j <= (length - i))
            {
                print square[i][j]
            }
        }
    }
    print newline
}

你用了什么语言?你能展示你的代码吗?
for (i=0, i<length, i++)
{
    for (j=0, j<Length, j++)
    {
        if (i < length/2)
        {
            if (j < length/2 AND j <= i)
                print square[i][j]
            }
        }
        else
        {
            if (j < length/2 AND j <= (length - i))
            {
                print square[i][j]
            }
        }
    }
    print newline
}