我有一个正方形的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
注意如何使用数组的第一部分,无论要在该行上打印多少元素。而且,间距并不重要。我把它们隔开来展示钻石。
我知道如何过滤右上角&#34; chunk&#34; out,使用j-i<(j/2)
。这会将原始方块转换为:
1
1 2 3
1 2 3 4 5
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
我怎样才能找到最右边的&#34; chunk&#34;过滤掉了吗?我可以对这些值施加什么附加条件?
答案 0 :(得分:0)
假设您已经找到并存储了&#34; side&#34;的长度。那个广场已经可以用下面的东西了。但是,如果您的方块长度均匀,那么它将无法工作(无法通过均匀的边长方形生成钻石)。
以下是伪代码,因此您需要根据您的语言进行调整。我还使用了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
}