C#列出元组编码练习



我是Tuple对象的新手。我正面临一个C#元组编码练习,不知道该怎么做。有人能给我一些建议或想法吗?我可以把它们作为练习的起点?老实说,我甚至不知道如何开始。问题如下:

  • 将有一个内部有[[1,2],[2,3],[4,5]]List< Tuple<int,int> >变量
  • 由于int2同时存在于第一元组元素和第二元组元素中,因此它将自动将第一元组元素与第二元组单元组合在一起,将它们合并为一个列表
  • 目标是返回2个列表变量:
    • 第一个列表中的[1,2,3]
    • CCD_ 5
  • 列表是从最大列表大小到最小列表大小输出的,但如果列表大小相等,则按第一个列表的元素从较小的int到较大的int排序

示例:

Input: [[0,1],[0,5],[2,3],[3,4],[4,6]]
Output:
1st list: [2,3,4,6]
2nd list: [0,1,5]

有人能给我一个如何开始的想法吗?

非常感谢。

这里有一个快速的例子:

static void Main(string[] args)
{
List<Tuple<int, int>> input = new List<Tuple<int, int>>();
input.Add(new Tuple<int, int>(0, 1));
input.Add(new Tuple<int, int>(0, 5));
input.Add(new Tuple<int, int>(2, 3));
input.Add(new Tuple<int, int>(3, 4));
input.Add(new Tuple<int, int>(4, 6));
List<int> current = new List<int>();
List<List<int>> output = new List<List<int>>();
foreach(Tuple<int, int> T in input)
{
if (current.Count == 0 || current.Contains(T.Item1) || current.Contains(T.Item2))
{
current.Add(T.Item1);
current.Add(T.Item2);
}
else
{
current.Sort();
output.Add(current.Distinct().ToList());
current = new List<int>();
current.Add(T.Item1);
current.Add(T.Item2);
}
}
if (current.Count > 0)
{
current.Sort();
output.Add(current.Distinct().ToList());
}
foreach(List<int> set in output)
{
Console.WriteLine($"[{String.Join(",", set)}]");
}
Console.Write("Press Enter to Quit");
Console.ReadLine();
}

最新更新