เพื่อนของคุณได้บอกเส้นทางไปยังร้านอาหารที่ดีที่สุดในเมือง เป็นชุดของการเลี้ยวซ้ายและขวา น่าเสียดายที่พวกเขาลืมที่จะพูดถึงระยะเวลาที่คุณต้องก้าวไปข้างหน้าระหว่างรอบเหล่านั้น โชคดีที่คุณมีแผนที่ถนนพร้อมร้านอาหารทั้งหมดในนั้น บางทีคุณสามารถคิดได้ว่าร้านอาหารพวกเขาหมายถึงอะไร
อินพุต
แผนที่ได้รับเป็นตารางสี่เหลี่ยมของอักขระ ASCII .
เป็นถนน#
เป็นอาคารA
ที่จะZ
มีร้านอาหารต่างๆ คุณเริ่มที่มุมซ้ายบนไปทางตะวันออก ตัวอย่าง:
.....A
.#.###
B....C
##.#.#
D....E
##F###
คำแนะนำของเพื่อนของคุณจะได้รับเป็นสตริง (อาจว่างเปล่า) หรือรายการของตัวละครที่มีL
s และR
s
เอาท์พุต
คุณสามารถเดินเส้นทางใด ๆ ที่สอดคล้องกับการเลี้ยวซ้ายและขวาในสตริงการป้อนข้อมูลโดยที่คุณต้องก้าวไปข้างหน้าอย่างน้อยหนึ่งก้าวก่อนที่พวกเขาแต่ละคนรวมทั้งในตอนท้าย โดยเฉพาะอย่างยิ่งนี่หมายความว่าถ้าสตริงเริ่มต้นด้วยR
คุณไม่สามารถไปทางใต้ได้ทันทีในคอลัมน์ซ้ายสุด นอกจากนี้ยังหมายความว่าคุณไม่สามารถหมุนได้ 180 องศา
คุณไม่สามารถเดินผ่านอาคารหรือร้านอาหารได้ยกเว้นอาคารที่คุณไปถึงในตอนท้าย .
คุณอาจจะคิดว่าด้านบนซ้ายมุมเป็น
คุณควรส่งออกร้านอาหารทั้งหมดที่สามารถเข้าถึงได้ด้วยคำแนะนำของเพื่อนของคุณเป็นสตริงหรือรายการ
คุณอาจคิดว่าคำแนะนำจะนำไปสู่ร้านอาหารอย่างน้อยหนึ่งแห่ง เช่นเดียวL
จะไม่ถูกต้องสำหรับแผนที่ด้านบน
ตัวอย่างบางส่วนสำหรับแผนที่ด้านบน:
<empty> A
R F
RR B,D
RL C,E
RLRL E
RLLR C
RLLL B
RLRR D
RLRRRR A,C
RLLLRLL B
หมายเหตุโดยเฉพาะอย่างยิ่งที่R
ไม่สามารถเข้าถึงB
ได้
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์
ใช้กฎมาตรฐานของกอล์ฟ
กรณีทดสอบเพิ่มเติม
นี่คือแผนที่ขนาดใหญ่ความอนุเคราะห์ของConor O'Brien (ซึ่งฉันแก้ไขเล็กน้อย):
.......Y..........................######
.####.....#.##....##..######....#.###.##
B.........#.##.#..##....##...##.#.#P...#
.#.#####..#.##..#.##....##.#....#.####.#
.#.#...C..#.##...G##..#.##.#....#.#....#
.#.#.#.#..#.####.###.#..##.#....#.#.NO.#
.#.#A#.#..#.##...F###...##.#.##.#......#
.#.###....#.##....##....##.#....###....#
.#.....##...##....##...D##........###R.#
.#.##..##...##E...##..######....####...#
.....X....#.#.....................##S.T#
###########.###########M############...#
#................................###.#.#
#.#########.########.######.#.######.#.#
#......V#.....######.IJ...........##.#.#
#########.###......ZH############L##.#.#
#########.##########.###############.#.#
####K##...##########.#....#..........#.#
####....########U......##...#######Q.#.#
#####################################W.#
และนี่คือรายการเส้นทางที่เลือกและผลลัพธ์ที่คาดหวัง:
<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
คำถามโบนัส: มีอินพุตที่ให้ผลลัพธ์อย่างเดียว I
หรือเท่านั้น U
? ถ้าเป็นเช่นนั้นเส้นทางที่สั้นที่สุดคืออะไร?