|
|
@@ -0,0 +1,34 @@
|
|
|
+namespace Day24;
|
|
|
+
|
|
|
+public class LuckyShot
|
|
|
+{
|
|
|
+ private readonly IList<Line3> _lines;
|
|
|
+
|
|
|
+ public LuckyShot(IList<Line3> lines)
|
|
|
+ {
|
|
|
+ _lines = lines;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void Find()
|
|
|
+ {
|
|
|
+ var equations = new List<string>();
|
|
|
+ Console.WriteLine("import sympy");
|
|
|
+ Console.WriteLine();
|
|
|
+ Console.WriteLine("sx, sy, sz, vsx, vsy, vsz = sympy.symbols(\"sx, sy, sz, vsx, vsy, vsz\")");
|
|
|
+ Console.WriteLine();
|
|
|
+ Console.WriteLine("equations = []");
|
|
|
+
|
|
|
+ for (var i = 0; i < 3; i++)
|
|
|
+ {
|
|
|
+ var h = _lines[i];
|
|
|
+ equations.Add($"equations.append(({h.Position.X} - sx) / (vsx - {h.Velocity.X}) - ({h.Position.Y} - sy) / (vsy - {h.Velocity.Y}))");
|
|
|
+ equations.Add($"equations.append(({h.Position.X} - sx) / (vsx - {h.Velocity.X}) - ({h.Position.Z} - sz) / (vsz - {h.Velocity.Z}))");
|
|
|
+ }
|
|
|
+ Console.WriteLine(string.Join("\n", equations));
|
|
|
+
|
|
|
+ Console.WriteLine();
|
|
|
+ Console.WriteLine("answers = sympy.solve(equations)");
|
|
|
+ Console.WriteLine("print(answers)");
|
|
|
+ Console.WriteLine("print(answers[0][sx] + answers[0][sy] + answers[0][sz])");
|
|
|
+ }
|
|
|
+}
|