Ini adalah lubang golf mini:
Batas luar adalah lingkaran dengan jari-jari 10 dan pusat (0,0). Batas dalam adalah lingkaran dengan jari-jari 3 dan pusat (0,5). Tee berada di (0, -8). Anggap bola hanya sebuah titik dengan jari-jari 0.
Dinamika bola diatur oleh aturan berikut:
Bola awalnya dipukul dengan energi 50, dan dengan sudut tertentu.
- Sudut berada dalam tekanan dalam sistem koordinat Cartesius, jadi 0 ° berarti langsung ke kanan, 90 ° langsung ke atas, dan seterusnya.
Ketika bola mengenai tepi lingkaran dalam atau luar, bola memantul dari lingkaran menggunakan hukum refleksi.
Bola kehilangan energi saat bergerak.
Untuk setiap unit tanah yang dicakupnya, ia kehilangan 1 unit energi.
Setiap kali memantul dari dinding, ia kehilangan 5 unit energi.
Bola berhenti ketika kehabisan energi atau ketika jatuh ke dalam lubang.
Jika bola mengenai dinding dengan <= 5 unit energi, bola akan berhenti.
Ia jatuh ke dalam lubang jika memiliki energi <10 ketika berada dalam jarak 1 dari lubang, jika tidak ia terus bergerak.
Tantangan
Dengan koordinat xy lubang, kembalikan sudut di mana Anda bisa memukul bola agar bola jatuh ke dalam lubang (jika ada sudut seperti itu).
Memasukkan
Ambil sebagai input koordinat x dan y dari pusat lubang dalam bentuk apa pun yang nyaman. Input dapat diambil dari STDIN (atau alternatif terdekat), parameter baris perintah, atau argumen fungsi.
Keluaran
Cetak atau kembalikan sudut dalam derajat di mana bola bisa mengenai tee sehingga bola akan jatuh ke dalam lubang. Jika ada sudut seperti itu, output harus dalam kisaran [0, 360), jika tidak maka output harus -1.