Browse Source

Correctifs

bastien.monsarrat 6 năm trước cách đây
mục cha
commit
c9c2f431d8
2 tập tin đã thay đổi với 22 bổ sung18 xóa
  1. 8 7
      D13.2/Program.cs
  2. 14 11
      D13.Bonus/Program.cs

+ 8 - 7
D13.2/Program.cs

@@ -24,17 +24,18 @@ namespace D13._2
             int? last = null;
             do
             {
-                carts.Sort((a, b) => a.x.CompareTo(b.x));
-                carts.Sort((a, b) => a.y.CompareTo(b.y));
+                carts.Sort((a, b) =>
+                {
+                    if (a.y == b.y) return a.x-b.x;
+                    return a.y-b.y;
+                });
 
                 last = lastCart(carts);
 
-                if (last == null) tick(track, carts);
+                if (last == null)tick(track, carts);
 
             } while (last == null);
 
-            tick(track, carts);
-
             var l = carts[last.Value];
             Console.WriteLine($"The answer is \"{l.x},{l.y}\" ({l.vx},{l.vy})");
         }
@@ -76,12 +77,12 @@ namespace D13._2
                 cart.x += cart.vx;
                 cart.y += cart.vy;
 
-                if (inter(carts, cart, i)) continue;
-
                 var c = track[(cart.x, cart.y)];
 
                 var ncart = getCart(c, cart);
                 carts[i] = ncart;
+
+                if (inter(carts, cart, i)) continue;
             }
         }
 

+ 14 - 11
D13.Bonus/Program.cs

@@ -31,19 +31,21 @@ namespace D13._3
             int? last = null;
             do
             {
-                last = lastCart(carts);
-
                 Bitmap image = new Bitmap(width, height);
                 foreach (var t in track) image.SetPixel(t.Key.x, t.Key.y, Color.White);
                 foreach (var t in carts) image.SetPixel(t.x, t.y, t.c);
 
                 writer.WriteVideoFrame(image);
 
-                carts.Sort((a, b) => a.x.CompareTo(b.x));
-                carts.Sort((a, b) => a.y.CompareTo(b.y));
+                carts.Sort((a, b) =>
+                {
+                    if (a.y == b.y) return a.x - b.x;
+                    return a.y - b.y;
+                });
+
+                last = lastCart(carts);
+                if (last == null) tick(track, carts);
 
-                tick(track, carts);
-            
             } while (last == null) ;
 
             writer.Close();
@@ -137,13 +139,14 @@ namespace D13._3
 
         static (int x, int y, int vx, int vy, int t, Color c) getCart(char c, int x, int y)
         {
-            var r = new Random();
+            var r = new Random(DateTime.Now.Millisecond);
+            var cl = Color.FromArgb(255, r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
             switch (c)
             {
-                case '>': return (x, y, +1, +0, 0, Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
-                case '<': return (x, y, -1, +0, 0, Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
-                case '^': return (x, y, +0, -1, 0, Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
-                case 'v': return (x, y, +0, +1, 0, Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
+                case '>': return (x, y, +1, +0, 0, cl);
+                case '<': return (x, y, -1, +0, 0, cl);
+                case '^': return (x, y, +0, -1, 0, cl);
+                case 'v': return (x, y, +0, +1, 0, cl);
             }
             return default;
         }