Kamu adalah tikus. Teman-teman mouse Anda semuanya telah ditangkap, dan tidak sadar dan terjebak dalam labirin yang hanya memiliki satu pintu masuk / keluar. Anda memiliki peta labirin yang sempurna, sehingga Anda dapat merencanakan solusi untuk bergegas masuk dan membawa semuanya ke tempat yang aman. Namun, labirin dijaga dengan sistem keamanan yang akan memicu peringatan jika ambang batas 1000
tercapai, menyebabkan Anda ditangkap dan gagal dalam misi penyelamatan Anda.
Dari penyelidikan sebelumnya pada labirin, setiap kotak yang Anda langkahkan (yaitu, setiap gerakan horizontal atau vertikal - tikus tidak dapat bergerak secara diagonal ) menambah 1
penghitung sistem keamanan. Namun, jika Anda membawa beban (baik blok dinamit atau teman mouse yang tidak sadar), itu malah menambah 2
karena mendeteksi tekanan tambahan. Alur masuk / keluar tidak memiliki sistem keamanan ini, jadi tidak menambah konter.
Anda memiliki persediaan dinamit yang tidak terbatas yang telah Anda bawa ke pintu masuk, sehingga Anda dapat meledakkan semua dinding untuk membebaskan teman-teman Anda. Tetapi Anda harus berhati-hati dengan melakukannya, karena setiap ledakan menambah 50
konter dari tekanan concussive. Selain itu, Anda hanya dapat membawa satu barang pada satu waktu, baik satu mouse atau satu blok dinamit. Karena setiap blok dinamit hanya dapat meledakkan satu ruang dinding, ini berarti bahwa jika ada beberapa dinding berturut-turut, Anda perlu melakukan perjalanan dengan tangan kosong kembali ke pintu masuk untuk mengambil lebih banyak.
Contoh yang dikerjakan
Misalkan labirin kita terlihat seperti berikut:
######
#M# E#
######
Saya akan gunakan c
untuk konter. Kami mulai di E
ntrance, bergerak satu persegi kiri sambil membawa dinamit c=2
,. Kami meledakkan dinamit untuk meledakkan tembok c=52
,. Kami memindahkan dua kotak ke kiri, dengan tangan kosong, untuk mendapatkan c=54
, dan kami sekarang berdiri di atas kotak mouse. Kami menjemput teman kami, dan memindahkan 3 kotak kembali ke E
xit, tetapi kotak terakhir tidak dihitung karena tidak memiliki sensor, jadi itu hanya 2 kotak dengan sesuatu di punggung kami. Itu berarti bahwa ketika kita mencapai pintu keluar dengan mouse terakhir c=58
, yang kurang dari 1000
, dan karenanya misi berhasil.
Tantangan
Diberikan labirin input, hasilkan apakah Anda, pahlawan mouse, dapat berhasil menyelamatkan semua tikus yang terperangkap dalam batasan yang diuraikan di atas, atau apakah misinya gagal.
Memasukkan
- Labirin 2D dalam format apa pun yang dapat diterima (string multiline, array string, dll.).
- Untuk tantangan ini, saya akan menggunakan
#
untuk dinding interior dan eksterior,M
untuk teman-teman mouse, danE
untuk pintu masuk. - Pintu masuk tidak akan pernah berbatasan langsung dengan dinding interior (akan selalu ada setidaknya satu ruang untuk bergerak bebas).
- Anda dapat mengganti karakter ASCII yang dapat dicetak yang Anda inginkan asalkan konsisten. Ini tidak memungkinkan Anda untuk menggunakan dua simbol yang berbeda untuk dinding interior vs dinding eksterior, asalkan Anda menjaga konsistensi (misalnya, jika Anda memilih untuk menggunakan
@
untuk dinding interior sebaliknya, dan cuti#
untuk eksterior, setiap dinding interior harus@
dan setiap dinding eksterior#
). - Labirin akan selalu dibatasi sepenuhnya oleh dinding, tetapi tidak harus persegi panjang. Jika diinginkan, Anda dapat mengasumsikan bahwa labirin diisi dengan spasi untuk membuat input persegi panjang (opsional).
- Labirin mungkin memiliki bagian yang tidak dapat dijangkau tanpa dinamit.
- Anda tidak dapat mengubah dinding eksterior labirin.
Keluaran
Nilai kebenaran / kepalsuan . Sejujurnya untuk "Ya, mouse dapat menyelamatkan setiap mouse lainnya" atau Falsey untuk "Tidak, sistem alarm akan tersandung."
Aturan
- Program lengkap atau fungsi dapat diterima.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Contohnya
Contoh yang benar, dipisahkan oleh garis kosong.
#####
#M E#
#####
######
#M# E#
######
########
#E # M#
# # #
# # #
# #
########
#############################
# ## # # #
# M ## M # # #
# ## # M # E #
#M ## # # #
#############################
###############
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMM MM#
#MMMMMMMMMMMME#
###############
Contoh Falsey, dipisahkan oleh garis kosong
#############################
#M ## ## ## #
# M ## M ## ## #
# ## ## M ## E #
#M ## ## ## #
#############################
#############################
########
########
# # #
# M # M#
########
#####
# M #
#####
#####
#####
#####
###################
# # # ## ## # # #
#M#M#M## E ##M#M#M#
# # # ## ## # # #
###################
#######
######
#####
####
# M#
####
###############
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMMMME#
###############