public void Solve() { var data = new List<CurvePoint>(); data.Add(new CurvePoint(){x = 1, y = Generator(1)}); data.Add(new CurvePoint(){x = 2, y = Generator(2)}); var x = 2; long sumOfError = 0; //We first assume a constant curve if (data[1].y != data[0].y) { sumOfError += data[0].y; do { var fit = new CurveFit(data); x++; data.Add(new CurvePoint() { x = x, y = Generator(x) }); Console.WriteLine(fit.ToString()); if (fit[x] != data.Last().y) { sumOfError += fit[x]; } else { break; } } while (true); } var answer = sumOfError; }