我是Tuple对象的新手。我正面临一个C#元组编码练习,不知道该怎么做。有人能给我一些建议或想法吗?我可以把它们作为练习的起点?老实说,我甚至不知道如何开始。问题如下:
- 将有一个内部有
[[1,2],[2,3],[4,5]]
的List< Tuple<int,int> >
变量 - 由于int
2
同时存在于第一元组元素和第二元组元素中,因此它将自动将第一元组元素与第二元组单元组合在一起,将它们合并为一个列表 - 目标是返回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();
}