bastien.monsarrat 6 yıl önce
ebeveyn
işleme
82216e15f5
1 değiştirilmiş dosya ile 22 ekleme ve 4 silme
  1. 22 4
      D12.2/Program.cs

+ 22 - 4
D12.2/Program.cs

@@ -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)