LuckyShot.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. namespace Day24;
  2. public class LuckyShot
  3. {
  4. private readonly IList<Line3> _lines;
  5. public LuckyShot(IList<Line3> lines)
  6. {
  7. _lines = lines;
  8. }
  9. public void Find()
  10. {
  11. var equations = new List<string>();
  12. Console.WriteLine("import sympy");
  13. Console.WriteLine();
  14. Console.WriteLine("sx, sy, sz, vsx, vsy, vsz = sympy.symbols(\"sx, sy, sz, vsx, vsy, vsz\")");
  15. Console.WriteLine();
  16. Console.WriteLine("equations = []");
  17. for (var i = 0; i < 3; i++)
  18. {
  19. var h = _lines[i];
  20. equations.Add($"equations.append(({h.Position.X} - sx) / (vsx - ({h.Velocity.X})) - ({h.Position.Y} - sy) / (vsy - ({h.Velocity.Y})))");
  21. equations.Add($"equations.append(({h.Position.X} - sx) / (vsx - ({h.Velocity.X})) - ({h.Position.Z} - sz) / (vsz - ({h.Velocity.Z})))");
  22. }
  23. Console.WriteLine(string.Join("\n", equations));
  24. Console.WriteLine();
  25. Console.WriteLine("answers = sympy.solve(equations)");
  26. Console.WriteLine("print(answers)");
  27. Console.WriteLine("print(answers[0][sx] + answers[0][sy] + answers[0][sz])");
  28. }
  29. }