这是来自我正在完成的一系列计算机科学练习,在尝试将整数列表拆分为子列表时,我遇到了以下编译器错误。我尝试了许多初始化整数数组列表的变体,但似乎找不到在文档中或堆栈溢出中有效的配置。
char[] array = digits.ToCharArray();
var intArray = new List<int>(new int[span]);
for (int i = 0; i < span; i++)
{
intArray[i] = (int)Char.GetNumericValue(array.ElementAt(i));
}
var data = new List<int[]>();
int n = 0;
while (data[n].Length == span)
{
data[n] = intArray.Skip(n).Take(span).ToArray();
n++;
}
输出:
Parameter name: index
at System.Collections.Generic.List`1.get_Item(Int32 index)
at LargestSeriesProduct.GetLargestProduct(String digits, Int32 span) in /Users/.../LargestSeriesProduct.cs:line 20
at seriesTest.Main() in /Users/.../LargestSeriesProduct.cs:line 53
第 20 行在我的 IDE 中显示为while (data[n].Length == span).
更新
我认为首先在Mathematica中编写代码以更深入地了解我在 C# 中遇到的列表问题列表可能是一个有用的练习。这当然很有启发性(该partition功能在这种情况下非常有用),但我仍然没有解决我最初的问题的方法。
largestSeriesProduct[string_, int_Integer] := Module[{numbers,lists},
numbers = ToExpression /@ Characters @ string;
lists = Times @@@ Partition[numbers,int,1];
Max @ lists
]
例如返回:
largestSeriesProduct["73167176531330624919225119674426574742355349194934",6]
23520