Diberikan string yang mewakili serangkaian sinyal tangan yang mengatur pesawat , tulis fungsi atau program untuk menghitung posisi akhir pesawat terbang mengikuti sinyal-sinyal ini.
NB: Co-koordinat dalam tantangan ini direpresentasikan sebagai sepasang koordinat Cartesian, ditambah arah kompas pos: (x, y, h)mana xadalah koordinat x, yadalah koordinat y, dan hmerupakan salah satu dari N, E, S, atau W.
Anda mulai dengan pesawat terbang di (0, 0, N)grid imajiner, dengan mesin mati. Input Anda adalah string yang berisi pasangan karakter yang dipisah koma, di mana setiap pasangan mewakili satu sinyal marshalling. Anda harus mengikuti setiap sinyal marshalling secara bergantian, dan mengeluarkan koordinat dalam (x, y, h)bentuk posisi akhir pesawat.
Jika suatu sinyal mengharuskan pesawat Anda untuk bergerak, anggap itu bergerak satu unit ke arah yang diperlukan untuk setiap sinyal dari jenis yang diterimanya. Jika suatu sinyal mengharuskan pesawat Anda berputar, anggap ia berputar 90 derajat ke arah yang diperlukan untuk setiap sinyal dari jenis yang diterimanya.
Sebuah pesawat tidak bisa bergerak jika mesinnya mati. Jika mesin pesawat Anda mati dan Anda menerima sinyal gerakan / belok, jangan menerapkan gerakan / belokan.
Sinyal
Setiap sinyal marshalling diwakili oleh sepasang karakter. Yang pertama dari pasangan mewakili posisi lengan kiri marshaller, dari sudut pandang pesawat , dan yang kedua lengan kanan dari POV yang sama. Grafik sinyal yang berguna ini dapat membantu.
o/ — START ENGINES (no movement, no turn)
-/ — CUT ENGINES (no movement, no turn)
-~ — TURN LEFT (no movement, left turn)
~- — TURN RIGHT (no movement, right turn)
~~ — COME FORWARD (forward movement, no turn)
:: — MOVE BACK (backward movement, no turn)
/\ — NORMAL STOP (no movement, no turn)
Ini bukan daftar lengkap sinyal marshalling, tetapi hanya itu yang Anda perlukan untuk mendukungnya.
Memasukkan
Input adalah string yang dipisahkan koma yang berisi pasangan karakter. String ini akan selalu valid - Anda tidak harus memvalidasi input.
Keluaran
Keluaran adalah seperangkat koordinat seperti dijelaskan di atas. Anda dapat mengembalikan ini dalam format apa pun yang nyaman - jika bahasa Anda mendukung beberapa nilai pengembalian, Anda dapat menggunakannya; sebagai alternatif, Anda dapat menggunakan string (tanda kurung di sekitar koordinat tidak wajib), array, tuple, daftar, atau apa pun yang menurut Anda nyaman. Satu-satunya aturan adalah bahwa hal itu harus berisi x, ydan hnilai-nilai, dalam urutan itu.
Uji Kasus
Input — Output
o/,~~,~~,~-,:: — (-1, 2, E)
::,~-,o/,/\,~~,-~,~~,~~,~~ — (-3, 1, W)
o/,::,-/,~~,o/,~-,~~,~~,~- — (2, -1, S)
o/,~-,~-,::,::,~-,~~,-~ — (-1, 2, S)
~-,~-,o/,::,::,-/,~~,-~ — (0, -2, N)