Anda tahu mainan kayu dengan bantalan bola kecil di mana tujuannya adalah untuk bergerak di sekitar labirin? Ini agak seperti itu. Diberi labirin dan serangkaian gerakan, tentukan di mana bola berakhir.
Papan dipegang secara vertikal, dan bola hanya bergerak karena gravitasi ketika papan diputar. Setiap "bergerak" adalah rotasi (dalam radian).
Labirin hanyalah dinding bundar konsentris, dengan masing-masing dinding memiliki tepat satu bukaan ke koridor luar, mirip dengan ini (anggaplah dinding itu lingkaran dan tidak runcing):
Seperti yang Anda lihat, bola dimulai di tengah dan berusaha keluar. Bola akan langsung jatuh begitu orientasi yang benar tercapai, bahkan jika itu tengah melalui rotasi. Rotasi tunggal dapat menyebabkan bola jatuh melalui beberapa bukaan. Misalnya, rotasi >= n * 2 * pi
cukup untuk menghindari labirin apa pun.
Untuk tujuan permainan, bola yang terletak di dalam 0.001
radian pembukaan dianggap "pas", dan akan jatuh ke koridor berikutnya.
Memasukkan:
Input ada dalam dua bagian:
Labirin diberikan oleh bilangan bulat yang
n
mewakili berapa banyak dinding / lubang di labirin. Ini diikuti olehn
garis-garis, dengan satu angka pada masing-masing, yang mewakili di mana lorong ke koridor berikutnya.Bergerak diberikan sebagai bilangan bulat yang
m
mewakili berapa banyak gerakan yang diambil, diikuti (lagi pada garis terpisah) denganm
rotasi searah jarum jam dari papan dalam radian (negatif berlawanan arah jarum jam).
Semua posisi bagian diberikan sebagai 0 rad = up
, dengan radian positif akan searah jarum jam.
Untuk contoh gambar di atas, input mungkin terlihat seperti ini:
7 // 7 openings
0
0.785398163
3.14159265
1.74532925
4.71238898
4.01425728
0
3 // 3 moves
-3.92699082
3.14159265
0.81245687
Keluaran:
Keluarkan nomor koridor tempat bola berakhir. Koridor diindeks nol, mulai dari tengah, jadi Anda mulai masuk 0
. Jika Anda melewati satu lubang, Anda berada di koridor 1
. Jika Anda keluar dari seluruh labirin, keluarkan bilangan bulat apa pun>= n
Untuk input sampel, ada tiga gerakan. Yang pertama akan menyebabkan bola jatuh melalui dua lubang. Yang kedua tidak menemukan pembukaan, dan penemuan ketiga satu . Bola sekarang berada di koridor 3
, jadi output yang diharapkan adalah:
3
Perilaku tidak ditentukan untuk input yang tidak valid. Input yang valid terbentuk dengan baik, dengan n >= 1
dan m >= 0
.
Penilaian adalah golf kode standar, jumlah byte terkecil yang menang. Celah standar dilarang. Input tidak boleh berupa hard-coded, tetapi dapat diambil dari input standar, argumen, konsol, dll. Keluaran dapat berupa konsol, file, apa pun, buat saja outputnya terlihat di suatu tempat.
1
, Anda hanya akan bekerja dengan lubang besar, bukan melompat bola ke tengah lubang saat jatuh.Jawaban:
Perl,
211191Dengan baris baru dan lekukan agar mudah dibaca:
Jumlah gerakan dalam input dibuang, stdin eof mengindikasikan akhir gerakan.
sumber
JavaScript 200
EDIT : Ini adalah contoh animasi yang membuktikan bahwa pemecah ini bekerja: http://jsfiddle.net/F74AP/4/
Fungsi harus dipanggil lewat string input.
Ini adalah contoh yang diberikan oleh OP:
Ia mengembalikan
3
sebagaimana dimaksud.sumber