|
|
@@ -29,7 +29,13 @@ namespace D12._2
|
|
|
} while (true);
|
|
|
|
|
|
int left = 0;
|
|
|
- for (int i = 0; i < 20; ++i)
|
|
|
+ int last = 0;
|
|
|
+ int prev = 0;
|
|
|
+ int cycleresult = 0;
|
|
|
+ int prevcycleresult = 0;
|
|
|
+ int gen = 0;
|
|
|
+
|
|
|
+ while (true)
|
|
|
{
|
|
|
string nstate = "";
|
|
|
|
|
|
@@ -39,11 +45,23 @@ namespace D12._2
|
|
|
left -= 2;
|
|
|
state = nstate;
|
|
|
|
|
|
- CalcResult(state, left);
|
|
|
+ last = CalcResult(state, left);
|
|
|
+
|
|
|
+ cycleresult = last - prev;
|
|
|
+
|
|
|
+ gen++;
|
|
|
+ if (cycleresult == prevcycleresult) break;
|
|
|
+
|
|
|
+ prevcycleresult = cycleresult;
|
|
|
+ prev = last;
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
+ var result = (50000000000 - gen) * cycleresult + last;
|
|
|
+ Console.WriteLine($"The result is {result}");
|
|
|
}
|
|
|
|
|
|
- private static void CalcResult(string state, int l)
|
|
|
+ private static int CalcResult(string state, int l)
|
|
|
{
|
|
|
int left = l;
|
|
|
int result = 0;
|
|
|
@@ -53,7 +71,7 @@ namespace D12._2
|
|
|
left++;
|
|
|
}
|
|
|
|
|
|
- Console.WriteLine(result);
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
static char getState(string state, int p, Rules rules)
|