按列(旋转)打印二维列表到控制台 C#
Print 2D list by columns(rotation) to console C#
我有一些要按列打印到控制台的列表列表。
列表看起来像这样。
List<List<string>> my2DimList = new List<List<string>>();
然后在某个循环中我迭代并添加一些 chars
.
for (int i = 0; i < max; i++)
{
my2DimList.Add(new List<string>());
}
for (int i = 0; i < numLoops; i++)
{
//Do some work here
my2DimList[s].Add(my_char);
}
我想通过以下方式将 chars
打印到控制台。
如果列表包含 2 个包含以下内容的列表:
Jon
Mike
然后我想这样打印:
e
nk
oi
JM
最好的方法是什么?
我想过一些轮换,但列表的长度不一样
让我们开始预赛:
var list = new List<List<string>>
{
new List<string> { "J", "o", "n" },
new List<string> { "M", "i", "k", "e"}
};
int h = list.Count;
int w = list.Max(l => l.Count);
那么首先,让我们来看看常规的打印方式是什么样子的:
for (int i = 0; i < h; i++)
{
for (int j = 0; j < w; j++)
{
if (j < list[i].Count)
Console.Write(list[i][j]);
else
Console.Write(" ");
}
Console.WriteLine();
}
// Prints:
// Jon
// Mike
现在你想在列中打印它,所以让我们切换 for
headers 的顺序:
for (int j = 0; j < w; j++)
{
for (int i = 0; i < h; i++)
{
if (j < list[i].Count)
Console.Write(list[i][j]);
else
Console.Write(" ");
}
Console.WriteLine();
}
// Prints:
// JM
// oi
// nk
// e
现在您想从下向上而不是从上向下打印它。为此,当我们计算垂直索引时,我们从最大值开始向下计数,而不是从最小值开始向上计数:
for (int j = w - 1; j >= 0; j--)
{
for (int i = 0; i < h; i++)
{
if (j < list[i].Count)
Console.Write(list[i][j]);
else
Console.Write(" ");
}
Console.WriteLine();
}
// Prints:
// e
// nk
// oi
// JM
好了。按特定顺序打印字符串只是一系列反转。
我有一些要按列打印到控制台的列表列表。 列表看起来像这样。
List<List<string>> my2DimList = new List<List<string>>();
然后在某个循环中我迭代并添加一些 chars
.
for (int i = 0; i < max; i++)
{
my2DimList.Add(new List<string>());
}
for (int i = 0; i < numLoops; i++)
{
//Do some work here
my2DimList[s].Add(my_char);
}
我想通过以下方式将 chars
打印到控制台。
如果列表包含 2 个包含以下内容的列表:
Jon
Mike
然后我想这样打印:
e
nk
oi
JM
最好的方法是什么? 我想过一些轮换,但列表的长度不一样
让我们开始预赛:
var list = new List<List<string>>
{
new List<string> { "J", "o", "n" },
new List<string> { "M", "i", "k", "e"}
};
int h = list.Count;
int w = list.Max(l => l.Count);
那么首先,让我们来看看常规的打印方式是什么样子的:
for (int i = 0; i < h; i++)
{
for (int j = 0; j < w; j++)
{
if (j < list[i].Count)
Console.Write(list[i][j]);
else
Console.Write(" ");
}
Console.WriteLine();
}
// Prints:
// Jon
// Mike
现在你想在列中打印它,所以让我们切换 for
headers 的顺序:
for (int j = 0; j < w; j++)
{
for (int i = 0; i < h; i++)
{
if (j < list[i].Count)
Console.Write(list[i][j]);
else
Console.Write(" ");
}
Console.WriteLine();
}
// Prints:
// JM
// oi
// nk
// e
现在您想从下向上而不是从上向下打印它。为此,当我们计算垂直索引时,我们从最大值开始向下计数,而不是从最小值开始向上计数:
for (int j = w - 1; j >= 0; j--)
{
for (int i = 0; i < h; i++)
{
if (j < list[i].Count)
Console.Write(list[i][j]);
else
Console.Write(" ");
}
Console.WriteLine();
}
// Prints:
// e
// nk
// oi
// JM
好了。按特定顺序打印字符串只是一系列反转。