Deskripsi
Tugas dari tantangan ini adalah untuk menyusun program atau fungsi yang melacak objek tertentu dalam ruang .
I / O
Program Anda akan diberikan 3 input, yang dapat diambil dengan cara apa pun yang masuk akal :
nakan menjadi ukuran sisi pesawat. (jadi, untuk , bidang Anda akan ). Anda mungkin menganggap akan selalu bilangan bulat ganjil.n
sakan menjadi posisi awal objek, diberikan sebagai pasangan koordinat.
Dakan menjadi vektor pasangan yang dipesan. Dakan mengikuti format , di mana akan selalu menjadi salah satu , untuk arah kardinal dan arah interardinal primer, dan akan menjadi bilangan bulat untuk jumlah 'kutu'.'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'
Dengan input ini, program Anda harus menampilkan pelacakan objek di pesawat.
Aturan
Output harus berisi batas-batas pesawat. Misalnya:
- 21012 + + ┌─────┐ 2│ │ 1│ │ 0│ │ 1│ │ 2│ │ -└─────┘
akan menjadi contoh pesawat 5 × kosong . Angka-angka di atas dan di samping hanya untuk referensi dan tidak perlu dicetak.
Anda dapat menggunakan karakter apa pun untuk batas, asalkan bukan spasi putih (atau diterjemahkan sebagai spasi putih). Karakter yang Anda pilih harus menggambarkan bidang penuh, yang berarti bahwa tidak ada celah di antara mereka.
Beberapa pesawat yang dapat diterima meliputi:
┌──┐ .... ---- + - +
│ │. . | | | |
│ │. . | | | |
└──┘; ....; ----; + - +
Pesawat yang tidak dapat diterima meliputi:
.... .... ++++. .
. . + +. .
. + +. .
; ....; ....; + +; . .
Objek yang akan dilacak dapat berupa karakter apa pun yang Anda pilih, asalkan hanya menempati 1 ruang di pesawat dan berbeda dari karakter batas.
Jejak objek yang dilacak juga dapat berupa karakter apa pun yang Anda pilih, asalkan mereka hanya menempati 1 ruang di pesawat dan berbeda dari objek.
Untuk setiap elemen di , objek harus bergerak spasi menuju , dan meninggalkan jejak di belakang.
Jika objek akan mengenai batas, itu akan tercermin. Jika objek masih memiliki gerakan ke kiri, ia akan terus bergerak ke arah yang dipantulkannya.
Untuk referensi, petunjuk ini mencerminkan satu sama lain:
→ ketika batas atas atau bawah dipenuhi;
→ ketika batas lateral terpenuhi;
Hasil akhir akan berisi jejak terbaru yang mungkin, yaitu, jika objek akan meninggalkan jejak di ruang di mana sudah ada jejak, karakter jejak yang lebih baru akan menimpa yang lebih tua.
Seperti biasa, celah standar dilarang secara default .
Mencetak:
Ini adalah tantangan kode-golf .
Contoh:
Input: , ,
Mengatasinya:
0 ┌─────┐ │ │ │ │ 0│ ○ │ │ │ │ │ └─────┘
0 ┌─────┐ │ ○ │ │ \ │ 0│ \ │ │ │ │ │ └─────┘
0 ┌─────┐ │∧ │ │ | \ │ 0│ ○ \ │ │ │ │ │ └─────┘
, yang akan menjadi output.
0 ┌─────┐ │∧ │ │ | \ │ 0│└ ○ \ │ │ │ │ │ └─────┘
(0s hanya untuk referensi, dan mereka tidak perlu berada di hasil akhir.)
Input: , ,
Perhatikan bahwa ketika :
0 ┌─────────┐ │ │ │ │ │ │ │ ∧ │ 0│ / | │ │ ○ / | │ │⟨ / │ │ \ / │ │ ∨ │ └─────────┘
Objek telah tercermin dua kali : sekali ketika mencapai bagian bawah dari pesawat saat akan menuju , di mana itu mencerminkan ke ; kemudian sekali lagi ketika mencapai sisi kiri dari pesawat, di mana mencerminkan ke .
Hasil akhir datang pada :
0 ┌─────────┐ │ ○ │ │ \ │ │ \ │ │ \ │ 0│ / | ⟩│ │ ∧ / / │ │⟨ \ / / │ │ \ \ / │ │ ∨ ∨ │ └─────────┘
Kasus uji:
Input: n = 5 , s = ( 0 , 0 ) , D = [ ( ′ N W ′ , 2 ) , ( ′ S ′ , 2 ) , ( ′ E ′ , 1 )
Keluaran:
0 ┌─────┐ │∧ │ │ | \ │ 0│└ ○ \ │ │ │ │ │ └─────┘
Input: , ,
Keluaran:
0 ┌─────────┐ │ ○ │ │ \ │ │ \ │ │ \ │ 0│ / | ⟩│ │ ∧ / / │ │⟨ \ / / │ │ \ \ / │ │ ∨ ∨ │ └─────────┘
Input: , ,
Keluaran:
0 ┌───┐ │ | │ 0│- ○ ┐│ │ | │ └───┘
Input: , ,
Keluaran:
0 ┌───────────┐ │ ∧ │ │ / \ │ │┌ - / - \ \ │ │ \ | / \ \ │ │ \ | \ \ │ 0│ | / ⟩│ │ | \ / / │ │ | / ○ │ │ | / \ │ │ ∨ \ │ │ \ │ └───────────┘
'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'integer 0-indexed (atau 1-indexed)? Jadi [('NW',2),('S',2),('E',1)]jadi [[7,2],[4,2],[2,1]]misalnya.