如何Console.Writeline IEnumerable <(int a,int b,int c)>?

比尔德尔

我正在进行一些计算机科学练习,很尴尬地说我不知道​​如何在VS Studio中控制台打印上述代码。我已经尝试了好几天,而部分问题是我实际上不知道上述结构的名称(比喻说)。我已经完成作业,阅读了手册,但是现在除了举手问问题之外,别无他法。在线上似乎有许多使用示例,IEnumerable<int>但是没有输出我能找到的元组。任何示例代码张贴将不胜感激。

public static class PythagoreanTriplet
{
    public static IEnumerable<(int a, int b, int c)> TripletsWithSum(int sum)
    {
        return Enumerable.Range(1, sum - 1)
                         .SelectMany(a => Enumerable.Range(a + 1, sum - a - 1)
                                                    .Select(b => (a: a, b:b, c: sum - a - b)))
                         .Where( x => x.a * x.a + x.b * x.b == x.c * x.c);

    }
}


public static class testclass
{
    public static void Main()
    {
        int input = 121;
        var data = PythagoreanTriplet.TripletsWithSum(input);
        Console.WriteLine(data);
    }
}


输出:

System.Collections.Generic.List`1[System.ValueTuple`3[System.Int32,System.Int32,System.Int32]]
内森·韦里

您必须将元组分解成这样的部分:

public static void Main()
{
    int input = 121;
    var data = PythagoreanTriplet.TripletsWithSum(input);
    foreach(var d in data)
        Console.WriteLine($"{d.a} {d.b} {d.c}");
}

原因是Tuple类没有覆盖ToString函数,因此输出类的名称而不是组成Tuple的部分。您将需要为您的解决方案提供一种将自定义元组转换为字符串以供使用的方法。

另一个选择是创建一个类型,该类型表示要投影到并以TripletsWithSum返回的数据,该类型可以根据您的需要覆盖ToString函数。

public class Tuple3Int : Tuple<int, int, int> 
{
    public Tuple3Int(int a, int b, int c) : base(a, b, c) { }

    public override string ToString()
    {
        return $"{Item1} {Item2} {Item3}";
    }
}

public static IEnumerable<Tuple3Int> TripletsWithSum(int sum)
{
    return Enumerable.Range(1, sum - 1)
                     .SelectMany(a => Enumerable.Range(a + 1, sum - a - 1)
                                                .Select(b => new Tuple3Int(a, b, sum - a - b)))
                     .Where(x => x.Item1 * x.Item1 + x.Item2 * x.Item2 == x.Item3 * x.Item3);

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

int []使用“错误”的Console.WriteLine重载

在 C# 中将 IEnumerable<string> 转换为 IEnumerable<int>

从IDictionary <int,IEnumerable <int >>创建ILookup <int,int>

检查IEnumerable <object>是否为IEnumerable <int>

IEnumerable和console.writeline

如何在 IEnumerable < KeyValuePair<string, int>> 中添加新对

“int &a = b;”中“&”的区别 vs "int c = &d;"

c++ 中的“int a, b =0”和“int a =0; int b = 0”有什么区别?

如何计算IEnumerable <int>中int []中每个数字存在多少次?

GetValueAt(Int a,int b)返回int

将整数列表 (IEnumerable<int>) 转换为特定长度的元组列表 (IEnumerable<IEnumerable<int>>)

无法将类型 'IEnumerable<int> 隐式转换为 'int'

如何获得`int->(int-> int)`?

删除int项的IEnumerable最佳实践

.NET Core - FromForm 不选择 IEnumerable<int>

从IEnumerable <int>到IEnumerable <dynamic>的隐式转换

Task <int>如何变成int?

如何更新 C++ std::pair<int, int> 中的值

INT 如何在 C++ 中作为 INT& 返回?

如何区分 C# 中的 typeof(int) == typeof(int?)

如何在C中将int转换为short int?

如何在C ++中通过'vector <int>'的'int'类型决定?

"int a, b;" 之间的性能差异 和“int a; int b;”?

将lambda类型从int => IEnumerable <string >>转换为int => Task <IEnumerable <string >>>?

如何在C ++中将素因子向量<int>减少到map <int,int>?

C / C ++使用int或unsigned int

无法将预期的类型'(a0,b0,c0,几何-> b)'与实际类型'几何->(Int,Int,Int,Int)

c ++:当int小于INT_MAX时,int溢出

这个C是什么意思?int (*f)(int, int)