pengantar
Semua orang tahu bahwa kemungkinan berhasil menavigasi bidang asteroid adalah sekitar 3.720 hingga 1. Tetapi meskipun Anda memperingatkan, Han Solo masih bersedia untuk mencoba peruntungannya.
Takut untuk kehidupan buatan Anda, Anda memutuskan untuk membuat kode, dalam dialek khusus kapal ( baca: bahasa Golf Kode pilihan Anda ), program penghindaran asteroid yang akan memutuskan jalur mana yang akan diambil dalam labirin ASCII bidang asteroid.
Memasukkan
Millenium Falcon memiliki program pemetaan lapangan asteroid, yang memberikan data serupa dengan ini:
| ##### ######### |
| ###### # ### # |
| # # # # #### # |
@ ## ####
|# # # ### ## |
|## ## #### # # |
|#### ##### # ## |
Baris atas adalah kiri dari Falcon, baris bawah adalah kanan dari Falcon, dan kolom mewakili apa yang ada di depan kapal.
- Masing
#
- masing adalah hambatan. - Setiap ruang adalah ruang kosong tempat kapal dapat terbang.
- Input selalu tinggi 7 karakter. Ini adalah batas lebar pemetaan asteroid.
- Input selalu panjang 32 karakter (30 untuk bidang itu sendiri dan 2 untuk batas awal dan akhir). Ini adalah batas kedalaman pemetaan asteroid. Bilah vertikal
|
menandai awal dan akhir pemetaan. @
adalah Falcon. Itu selalu di baris tengah (baris 4) dan kolom pertama di input.- Ruang yang tersisa di bilah vertikal pada kolom terakhir adalah tempat kapal harus tiba. Itu selalu di baris tengah (baris ke-4) dan kolom terakhir di input.
Input dapat diambil sebagai string multi-line, array string, dari STDIN atau parameter fungsi, atau dibaca dari file.
Kemungkinan manuver
Anda dikejar oleh TIE-Fighters, oleh karena itu Anda harus selalu maju. Dengan demikian ada tiga cara kapal dapat terbang di setiap langkah:
-
Meneruskan/
Maju dan belok kiri\
Maju dan belok kanan
Misalnya, ini adalah jalur yang valid:
@---
--
/ \ /
@ -
-
/ \
/ \
@ \
Seperti yang Anda lihat, selalu ada tepat satu gerakan per kolom. Falcon adalah sepotong sampah, oleh karena itu ia tidak dapat melakukan pergantian yang keras. Yang berarti bergerak seperti /\
atau \/
tidak diizinkan . Harus ada minimal satu penyerang murni di -
antara dua belokan yang berlawanan. Di sisi lain, memutar satu cara untuk beberapa langkah berturut-turut dimungkinkan, seperti yang terlihat di atas.
Falcon terhempas jika satu gerakan menuntun kapal berada di tempat di mana hambatan terjadi. Misalnya, gerakan ini menyebabkan crash:
@-#
@
\
#
#
/
@
Perhatikan bahwa ini bukan kerusakan:
@-#
\
-
Keluaran
Anda harus menampilkan bidang asteroid yang sama ASCII, dengan jalur yang valid hingga akhir. Falcon harus dicetak di titik akhir dan bukan di titik awal.
Misalnya, output yang valid untuk contoh input yang diberikan sebelumnya adalah:
| ##### ######### |
| ###### #-------- ### # |
| # # #/ # ####\ # |
--------- ## \ #### ----@
|# # # ### \ ## / |
|## ## #### \ #/ # |
|#### ##### #-- ## |
Jalur Anda hanya perlu tidak menabrak elang. Itu tidak perlu menjadi jalan terpendek yang mungkin.
Anda dapat mengasumsikan bahwa akan selalu ada setidaknya satu jalan yang mungkin sampai akhir.
Anda dapat menampilkan ke STDOUT, dalam file atau apa pun yang setara asalkan bidang asteroid dicetak persis seperti yang ada di pos ini (mis., Mengeluarkan daftar koordinat untuk jalur tidak valid).
Uji kasus
Bidang asteroid normal
| ##### ######### | | ###### # ### # | | # # # # #### # | @ ## #### |# # # ### ## | |## ## #### # # | |#### ##### # ## |
Output yang mungkin
| ##### ######### | | ###### #-------- ### # | | # # #/ # ####\ # | --------- ## \ #### ----@ |# # # ### \ ## / | |## ## #### \ #/ # | |#### ##### #-- ## |
Bidang asteroid yang tidak teratur
|# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # | @ # # # # # # # # # # # # # # |# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # |
Output yang mungkin
|# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # | -# #-# #-# #-# #-# #-# #-# #--@ |#\#/#\#/#\#/#\#/#\#/#\#/#\#/# | | #-# #-# #-# #-# #-# #-# #-# #| |# # # # # # # # # # # # # # # |
Inti bintang kematian
| # # # # | | # # # | | # # # # # | @ # # # # # | # # # # | | # # # # # | | # # # # |
Output yang mungkin
| # # # -- # | | --- # # / #\ - | | / #\ # # / # \ /#\ | - # \ # #/ # - # ----@ | # \ # ---- # # | | # \#/ # # # | | # - # # # |
Parit bintang kematian
|##############################| |##############################| |##############################| @ |##############################| |##############################| |##############################|
Keluaran
|##############################| |##############################| |##############################| ------------------------------@ |##############################| |##############################| |##############################|
Gua asteroid
|### ##########################| |## # ############### ## ######| |# ### ######## ### ## # #####| @ ###### ###### ### ## ### |######## ### ### ## #########| |########## # ### ## ##########| |########### #####|
Output yang mungkin
|###-##########################| |##/#\############### ##-######| |#/###--######## ### ##/#\#####| -######\###### ### ##/###-----@ |########--### ### ##/#########| |##########\# ### ##/##########| |###########-------- #####|
Mencetak gol
R2D2 sibuk berenang di rawa-rawa, jadi Anda harus memprogram pengontrol Falcon sendiri, yang membosankan. Karenanya kode terpendek menang .
-
di jalur di setiap belokan, yang didefinisikan sebagai gerakan "maju". Tapi gerakan sebenarnya selalu dua diagonal-kiri diikuti oleh dua diagonal-kanan.