Seorang teman Anda telah memberi Anda petunjuk ke restoran terbaik di kota. Ini serangkaian belokan kiri dan kanan. Sayangnya, mereka lupa menyebutkan berapa lama Anda harus berjalan lurus di antara belokan itu. Untungnya Anda memiliki peta jalan dengan semua restoran di atasnya. Mungkin Anda bisa mencari tahu restoran mana yang dimaksud?
Memasukkan
Peta diberikan sebagai kotak persegi panjang karakter ASCII. .
adalah jalan, #
adalah bangunan, A
untuk Z
menjadi berbagai restoran. Anda mulai di sudut kiri atas, ke timur. Contoh:
.....A
.#.###
B....C
##.#.#
D....E
##F###
Instruksi teman Anda akan diberikan sebagai string (kemungkinan kosong) atau daftar karakter yang mengandung L
s dan R
s.
Keluaran
Anda dapat berjalan di setiap jalur yang sesuai dengan belokan kiri dan kanan pada string input, asalkan Anda mengambil setidaknya satu langkah ke depan sebelum masing-masing, serta di akhir. Khususnya ini berarti jika string dimulai dengan R
Anda tidak dapat langsung ke selatan di kolom paling kiri. Ini juga berarti Anda tidak dapat berbalik 180 ° di tempat.
Anda tidak dapat berjalan melalui bangunan atau restoran kecuali yang Anda jangkau di akhir. Anda dapat menganggap bahwa sudut kiri atas adalah a .
.
Anda harus menampilkan semua restoran yang dapat dijangkau dengan instruksi teman Anda, sebagai string atau daftar.
Anda dapat berasumsi bahwa instruksi akan mengarah ke setidaknya satu restoran. Misalnya satu L
akan tidak valid untuk peta di atas.
Beberapa contoh untuk peta di atas:
<empty> A
R F
RR B,D
RL C,E
RLRL E
RLLR C
RLLL B
RLRR D
RLRRRR A,C
RLLLRLL B
Perhatikan khususnya yang R
tidak mencapai B
.
Anda dapat menulis sebuah program atau fungsi, mengambil input melalui STDIN (atau alternatif terdekat), argumen baris perintah atau argumen fungsi dan mengeluarkan hasilnya melalui STDOUT (atau alternatif terdekat), nilai pengembalian fungsi atau parameter function (out).
Aturan standar kode-golf berlaku.
Kasus Uji Tambahan
Ini adalah peta yang lebih besar, milik Conor O'Brien (yang saya modifikasi sedikit):
.......Y..........................######
.####.....#.##....##..######....#.###.##
B.........#.##.#..##....##...##.#.#P...#
.#.#####..#.##..#.##....##.#....#.####.#
.#.#...C..#.##...G##..#.##.#....#.#....#
.#.#.#.#..#.####.###.#..##.#....#.#.NO.#
.#.#A#.#..#.##...F###...##.#.##.#......#
.#.###....#.##....##....##.#....###....#
.#.....##...##....##...D##........###R.#
.#.##..##...##E...##..######....####...#
.....X....#.#.....................##S.T#
###########.###########M############...#
#................................###.#.#
#.#########.########.######.#.######.#.#
#......V#.....######.IJ...........##.#.#
#########.###......ZH############L##.#.#
#########.##########.###############.#.#
####K##...##########.#....#..........#.#
####....########U......##...#######Q.#.#
#####################################W.#
Dan berikut adalah beberapa daftar arah yang dipilih dan hasil yang diharapkan:
<empty> Y
RR B
RLL Y
RLRR B,C,X
RLLLRRR G
RLRLRLRL I,Z
RLLRRRLRRLRR C,D,F,G,Y
RLRRLLRLLLRL B,C,Y
RLLRRLRRRLLLL F,M,N,O,Y
RLRRLLLRRRRLLLL F,M,Y
RLRRLRRRRRRRRRR E,F,Y
RLRRRLLLRLLRRLL M,N,O
RLLRRLRRLRLRLRRLLR E,U
RLRLLRLRRLRRRRRLRL F,G,I,Z
RLLRRLLRLLRRRLRRLLRR W
RLLLRRRLRRLLLLLRLLLLLL D,G,X
RLRLLRLRRLRLRRRLRLLLRR B,C,E,J,X
RLRLRLLLLRLRRRRRRLRLRRLR Y
RLRLRRRLRLLLLRLRRLLLLRLLRRL E,M,X
RLRLLLRRRLLLRLLRLLRLRRLRLRR B,E,F,K
RLRRRLLLLLLLLLLLLLLLRRRRLLL A,B
Pertanyaan bonus: apakah ada input yang hanya menghasilkan I
atau hanya U
? Jika demikian, apa jalan tersingkat seperti itu?
sumber
Python 2,
180177168163161158 byteParameter
v
adalah peta sebagai string;o
adalahLR
string.Mitch Schwartz menyimpan
2310banyak byte. Terima kasih!Saya menyimpan dua byte dengan mengatur
O={0}
dan mengembalikan`O`[9::5]
, yang mungkin tidak terlalu portabel: ia menganggap ituhash(0) == 0
, saya pikir, karena itu menyebabkan urutan elemenrepr(O)
menjadidan mengiris string itu dengan kreatif membuat saya mendapatkan jawabannya.
sumber
C ++ 465
C ++ begitu verbose ...
Saya akan mencoba untuk mempersingkat lebih lanjut. Saran diterima.
sumber