array.Take(13).Skip(x)正在减去take

Ryi*_*ers 7 c# linq foreach

这是针对Project Euler,问题8.

我试图foreach通过数组,每次跳过最后一个数字并拉出数组中的下13个相邻数字.

我的代码:

for(int x = 0; x < 987; x++)
{
    foreach(int number in numbers.Take(13).Skip(x))
    {
        hold = hold * number;
        adjacent[index] = number;
        index++;
    }

    if (hold > product)
    {
        product = hold;
    }

    Array.Clear(adjacent, 0, adjacent.Length);
    index = 0;
    hold = 1;
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,每次通过数组枚举时,它会减去x的数量,从它通过列表的次数减去13,即13.

所以当x为5时,它只会通过数组8次.

如何在一次遍历13个数字的位置修复它?

Wic*_*ser 18

您的代码首先需要13个,然后跳过13个代码中的下一个x元素.相反,先跳过然后采取:

  for (int x = 0; x < 987; x++)
    {
        foreach(int number in numbers.Skip(x).Take(13))
        {
            hold = hold * number;
            adjacent[index] = number;
            index++;
        }

        if (hold > product)
        {
            product = hold;
        }

        Array.Clear(adjacent, 0, adjacent.Length);
        index = 0;
        hold = 1;
    }
Run Code Online (Sandbox Code Playgroud)