คุณเป็นนักขับรถแท็กซี่ในซานฟรานซิสโก ในฐานะที่เป็นเรื่องปกติของคนขับรถแท็กซี่คุณกำลังนำทางกริดที่ทิศทางที่ถูกต้องเท่านั้นที่คุณสามารถเคลื่อนย้ายได้คือด้านซ้ายขวาขึ้นและลง อย่างไรก็ตามซานฟรานซิสโกเป็นเนินเขามากดังนั้นระยะห่างระหว่างสี่แยกที่อยู่ติดกันไม่จำเป็นต้องเหมือนกัน โดยเฉพาะอย่างยิ่งระยะห่างระหว่างจุดตัดที่ระดับความสูงa
และสี่แยกที่อยู่ติดกันที่ระดับความสูงจะเป็นb
1 + |a - b|
เป้าหมายของคุณคือค้นหาเส้นทางที่สั้นที่สุดจากต้นกำเนิดของคุณที่ด้านบนซ้ายของแผนที่ไปยังปลายทางที่ด้านล่างขวา
อินพุต
ตารางสองมิติของระดับความสูงของจำนวนเต็มในรูปแบบใดก็ได้ที่สะดวกที่สุด (อาร์เรย์สองมิติ, อาร์เรย์หนึ่งมิติที่มีความกว้างและ / หรือความสูง ฯลฯ )
เอาท์พุต
ลำดับของเส้นทางที่จะเดินทางมาถึงที่มุมล่างขวาของการป้อนข้อมูลจากด้านบนที่เหลืออยู่ในระยะทางที่สั้นที่สุดที่กำหนดระยะห่างระหว่างสองทางแยกที่อยู่ติดกันมีระดับa
และจะได้รับจากสูตรb
1 + |a - b|
หากมีหลายทางออกโซลูชันทั้งหมด
แม้ว่าฉันจะใช้U
, D
, L
และR
สำหรับขึ้นลงซ้ายและขวาในตัวอย่างด้านล่างโปรแกรมของคุณอาจจะใช้ใด ๆ สี่สายที่แตกต่างกันเพื่อเป็นตัวแทนของทิศทางตราบเท่าที่มันสอดคล้องกับพวกเขาในและทั่วทั้งปัจจัยการผลิตทั้งหมด
ตัวอย่าง
Input:
0 3 0 0 0
0 2 0 2 0
0 0 0 3 0
Output:
D D R R U U R R D D
Input:
3
Output:
<empty>
Input:
11 11 11
11 11 11
11 11 11
Output:
R R D D
R D R D
R D D R
D R R D
D R D R
D D R R
Input:
7 8 1 -1 0
4 4 6 -1 7
3 4 4 2 8
2 5 2 -1 2
Output:
D R D R R D R
D R D R D R R
นี่คือcode-golfดังนั้นคำตอบด้วยจำนวนไบต์ที่สั้นที่สุดจะชนะ