Seekor kucing yang hampir tanpa massa dijatuhkan di ruang angkasa (jangan khawatir, dengan baju ruang angkasa dan segalanya) pada titik (x, y, z)
dengan kecepatan (vx, vy, vz)
. Ada planet yang tetap, padat tak terhingga (dengan volume 0) di titik (0, 0, 0)
dan menarik objek di kejauhan r
dengan percepatan 1/r^2
. Menurut gravitasi Newton, ke mana objek pergi setelah waktu t
?
Hampir tanpa massa dalam hal ini berarti Anda mengeluarkan nilai lim (mass --> 0) <position of cat>
. Massa dipengaruhi oleh gravitasi planet, tetapi planet ini tidak terpengaruh oleh gravitasi kucing. Dengan kata lain, tubuh pusat tetap.
Ini agak mirip dengan Code Golf: Apa nasib pesawat ruang angkasa itu? [versi floating point] , tapi ini berbeda karena mengukur akurasi.
Anda dapat mengimplementasikan solusi berdasarkan simulasi, yang harus berjalan dalam waktu kurang dari 3 detik, ATAU Anda dapat mengimplementasikan program yang memberikan nilai tepat (juga harus berjalan dalam waktu kurang dari 3 detik). Lihat detail penilaian di bawah ini. Jika Anda menerapkan simulasi, itu tidak harus tepat, tetapi skor Anda akan lebih rendah karena ketidaktepatan tersebut.
Masukan : x y z vx vy vz t
, belum tentu bilangan bulat yang mewakili x, y, z koordinat, kecepatan dalam x, y, dan arah z dan waktu masing-masing. Dijamin bahwa kecepatan kucing benar-benar kurang dari kecepatan lepas di ketinggian itu. Input dapat diambil dari mana saja, termasuk parameter ke suatu fungsi. Program harus berjalan dalam waktu kurang dari tiga detik pada laptop saya untuk t < 2^30
, yang berarti, jika Anda menjalankan simulasi, Anda harus menyesuaikan catatan waktu Anda sesuai. Jika Anda berencana untuk mencapai batas 3 detik untuk setiap test case, pastikan ada parameter yang dapat diubah yang dapat membuatnya lebih akurat / kurang akurat untuk peningkatan kecepatan, sehingga saya dapat membuatnya berjalan dalam tiga detik di komputer saya.
Output : x y z
, posisi setelah waktu t
.
Karena masalah dua tubuh dapat diselesaikan dengan sempurna, secara teori dimungkinkan untuk mendapatkan jawaban yang sempurna dan benar.
Penilaian : Untuk kasus uji apa pun, kesalahan didefinisikan sebagai jarak antara output Anda dan output "true". Output sebenarnya didefinisikan sebagai output yang dihasilkan oleh snipet kasus uji. Jika kesalahan kurang dari 10^(-8)
, kesalahan dibulatkan ke nol. Skor Anda adalah kesalahan rata-rata pada 100 (atau lebih) kasus uji acak. Jika Anda menulis jawaban yang sangat akurat, Anda harus mendapatkan skor 0; kemenangan skor terendah, dan ikatan akan diputus berdasarkan panjang kode.
Kasus uji :
1 0 0 0 -1 0 1000000000 --> 0.83789 -0.54584 0
Dalam kasus ini, orbitnya melingkar sempurna dengan periode 2 * pi, jadi setelah berputar 159154943 kali, kucing berakhir pada sekitar (0,83789, -0,54584). Ini bukan ujian, kode Anda akan diuji; Namun, jika Anda mengirimkan jawaban yang sangat akurat, Anda mungkin ingin mengujinya.
Cuplikan di bawah ini menghasilkan kasus uji tambahan acak dan akan digunakan untuk menilai pengiriman; beri tahu saya jika ada bug dengan ini:
t
diberikan dalam satuan waktu, apa pun itu, dan kecepatan akan menggunakan satuan yang sama. Apakah dalam hitungan detik atau jam, jawabannya akan sama.
nearly massless cat
Nah, seperti apa massa kucing itu? Haruskah kita menggunakan 0
nilai untuk massa kucing ini?
t
diberikan dalam detik? Jika demikian, apakah kecepatan akan diberikan dalam satuan per detik, atau sesuatu yang lebih kecil?