Bob diculik dan terjebak dalam labirin. Tugas Anda adalah membantunya menemukan jalan keluar. Tapi karena ini adalah labirin yang sangat gelap dan menakutkan, dia tidak bisa melihat apa pun. Dia hanya bisa merasakan dinding ketika dia berlari ke sana, dan tahu kapan dia menemukan pintu keluar, tetapi tidak tahu apa-apa lagi.
Karena dia harus menjalankan program Anda dengan memori, itu harus sesingkat mungkin.
Catatan: Saya mengambil masalah ini dari http://acmgnyr.org/year2016/problems.shtml , tetapi mengadaptasinya sedikit, dan menulis sendiri program hakim / uji kasus.
Spesifikasi
- Ini adalah masalah interaktif, jadi program Anda akan menampilkan perpindahan ke stdout, dan menerima tanggapan dari stdin.
- Anda Program kaleng keluaran salah satu langkah
right
,left
,down
,up
. - Maka akan mendapatkan sebagai masukan salah satu dari berikut ini:
wall
- ini berarti Bob telah menabrak tembok. Bob akan tinggal di tempat yang sama.solved
- Bob telah menemukan pintu keluar! Program Anda sekarang juga harus keluar tanpa mencetak apa pun.ok
- Bob bisa bergerak ke arah yang diberikan.
- Jika labirin tidak memiliki jalan keluar, program Anda harus
no exit
memberi tahu Bob bahwa ia harus menyerah. Program Anda kemudian harus keluar tanpa mencetak apa pun. - Karena Bob sedang terburu-buru untuk keluar, program Anda seharusnya tidak membuat gerakan asing. Dengan kata lain, program Anda tidak diperbolehkan bergerak ke arah yang sama dari kotak yang sama dua kali .
- Ini kode-golf , jadi program tersingkat menang!
Contohnya
Dalam contoh berikut, S
adalah kotak awal, X
adalah pintu keluar, #
adalah dinding, dan spasi adalah kotak yang valid. Karena tidak ada jawaban tunggal yang benar, ini hanyalah contoh dari solusi. Perhatikan juga bahwa gambar-gambar labirin ada di sana untuk Anda lihat, dan program Anda tidak akan mendapatkannya sebagai masukan.
########
#S #
###### #
# #
#X#
right
ok
right
ok
right
ok
right
ok
right
ok
right
wall
down
ok
right
wall
down
ok
right
wall
down
solved
#####
# S #
#####
right
ok
right
wall
down
wall
up
wall
left
ok
down
wall
up
wall
left
ok
down
wall
up
wall
left
wall
right
ok
no exit
solved
###############################
#S #
############## ### #
# #X# #
# #
##################
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
wall
down
ok
right
wall
down
ok
right
wall
down
ok
right
wall
down
wall
left
ok
down
wall
up
ok
up
ok
left
ok
down
ok
down
ok
down
wall
left
ok
down
wall
up
ok
up
ok
left
ok
down
ok
down
ok
down
wall
left
ok
down
wall
up
ok
up
ok
left
wall
down
ok
left
wall
down
ok
left
ok
down
wall
up
wall
left
ok
down
wall
up
solved
Program Pemeriksa
- Saya telah menulis pemeriksa solusi dengan Python. Anda dapat menemukannya di https://gist.github.com/Maltysen/f0186019b3aa3812d812f8bb984fee19 .
- Jalankan seperti
python mazechecker.py ./mazesolver
. - Ini akan menguji program Anda di semua labirin di folder bernama
mazes
. - Labirin berada di file terpisah dalam format yang sama dari atas.
- Ia memeriksa semua kondisi yang tercantum di atas, dan memberi tahu Anda jika solusi Anda melanggar.
- Anda dapat memilikinya mencetak info diagnostik tambahan dengan
python mazechecker.py -d ./mazesolver
. - Anda dapat menemukan
mazes
folder zip di sini . Anda juga dapat menambahkan milik Anda sendiri jika mau.
solved
saat keluaran no exit
? Jika ya mohon sebutkan dalam aturan, tidak hanya dalam kasus uji!
x,y
dan pergi up
, dengan merespon wall
, lalu right
dengan menanggapi lagi wall
, bolehkah aku kemudian mencoba up
lagi, atau hanya left
dan down
masih tersedia karena saya belum pindah dari alun-alun ini?