Anda adalah sopir taksi di San Francisco. Seperti tipikal driver taksi, Anda menavigasi grid di mana satu-satunya arah yang valid yang dapat Anda pindahkan adalah kiri, kanan, atas, dan bawah. Namun, San Fransisco sangat berbukit sehingga jarak antara dua persimpangan yang berdekatan belum tentu sama. Lebih khusus lagi, jarak antara persimpangan di ketinggian a
dan persimpangan yang berdekatan di ketinggian b
akan 1 + |a - b|
. Tujuan Anda adalah untuk menemukan semua jalur terpendek dari asal Anda di kiri atas peta ke tujuan Anda di kanan bawah.
Memasukkan
Grid dua dimensi dari ketinggian integer dalam format apa pun yang paling nyaman (array dua dimensi, array satu dimensi dengan lebar dan / atau tinggi, dll.).
Keluaran
Urutan arah untuk melakukan perjalanan untuk tiba di sudut kanan bawah input dari kiri atas dalam jarak sesingkat mungkin yang diberikan jarak antara dua persimpangan ketinggian yang berdekatan a
dan b
diberikan oleh rumus 1 + |a - b|
. Jika ada beberapa solusi, keluarkan semua solusi.
Meskipun saya menggunakan U
, D
, L
, dan R
untuk atas, bawah, kiri, dan kanan pada contoh di bawah program anda dapat menggunakan empat senar yang berbeda untuk mewakili arah asalkan konsisten dengan mereka dalam dan di semua masukan.
Contohnya
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
Ini adalah kode-golf sehingga jawabannya dengan hitungan byte terpendek akan menang.
Jawaban:
JavaScript (ES6),
228212200194 byteMemasukkan
Array satu dimensi
a
dan lebarw
dalam sintaks currying(a)(w)
Keluaran
Daftar solusi yang dipisahkan oleh ruang seperti
"DRDRRDR DRDRDRR"
Diformat dan dikomentari
Uji kasus
Tampilkan cuplikan kode
sumber