Майже безмасова кішка скидається в космос (не хвилюйтесь, з космічним костюмом і всім) у точці (x, y, z)
зі швидкістю (vx, vy, vz)
. У точці є нерухома, нескінченно щільна планета (об'ємом 0), (0, 0, 0)
яка притягує об'єкти на відстань r
із прискоренням 1/r^2
. Відповідно до ньютонівської гравітації, куди іде час після часу t
?
Майже безмасштабне в цьому випадку означає, що ви виводите значення lim (mass --> 0) <position of cat>
. На масу впливає гравітація планети, але на планету не впливає гравітація кота. Іншими словами, центральне тіло фіксується.
Це дещо схоже на Code Golf: Яка доля космічного корабля? [версія з плаваючою комою] , але це інше, оскільки це вимірювання точності.
Ви можете реалізувати рішення на основі моделювання, яке має запуститись менше ніж за 3 секунди, АБО ви можете реалізувати програму, яка дає точне значення (також має працювати менше ніж за 3 секунди). Див. Детальну інформацію про підрахунок нижче. Якщо ви реалізуєте моделювання, воно не повинно бути точним, але ваш результат буде нижчим через неточність.
Введення : x y z vx vy vz t
не обов'язково цілі числа, що представляють координати x, y, z, швидкість у напрямках x, y, z та час відповідно. Гарантується, що швидкість кота суворо менша за швидкість втечі на цій висоті. Введення даних може здійснюватися з будь-якого місця, включаючи параметри функції. Програма повинна працювати менш ніж за три секунди на моєму ноутбуці t < 2^30
, а це означає, що якщо ви працюєте з імітацією, ви повинні відповідно відрегулювати свій часовий крок. Якщо ви плануєте досягти межі 3 секунди для кожного тестового випадку, переконайтеся, що є настроюваний параметр, який може зробити його більш точним / менш точним для збільшення швидкості, щоб я міг змусити його працювати за три секунди на своєму комп’ютері.
Вихід :, x y z
положення за часом t
.
Оскільки проблему з двома тілами можна вирішити ідеально, теоретично можна отримати ідеальну правильну відповідь.
Оцінка балів : для будь-якого тестового випадку помилка визначається як відстань між вашим результатом та "справжнім" результатом. Справжній вихід визначається як той, який генерує фрагмент тестового випадку. Якщо помилка менше 10^(-8)
, помилка округляється до нуля. Ваш бал - це середня помилка в 100 (або більше) випадкових тестових випадках. Якщо ви пишете ідеально точну відповідь, ви повинні отримати оцінку 0; виграє найнижчий бал, а зв'язки будуть порушені за кодом.
Тестові приклади :
1 0 0 0 -1 0 1000000000 --> 0.83789 -0.54584 0
У цьому випадку орбіта ідеально кругла з періодом 2 * пі, тому після обходу 159154943 разів кішка закінчується приблизно (0.83789, -0.54584). Це не тестовий випадок, на якому буде перевірено ваш код; якщо ви подасте абсолютно точну відповідь, можливо, ви захочете перевірити її на цьому.
Нижче наведений фрагмент генерує випадкові додаткові тестові випадки і буде використовуватися для судження подань; дайте мені знати, чи є помилка з цим:
t
задається в одиницю часу, що б це не було, і швидкість буде використовувати ту саму одиницю. Буде це за секунди чи години, відповідь буде однаковою.
nearly massless cat
Ну, якою була б точна маса кота? Чи варто просто використовувати 0
як значення для маси цієї кішки?
t
дається в секундах? Якщо так, чи буде задана швидкість в одиницях в секунду, чи щось менше?