Sie sind Taxifahrer in San Francisco. Wie es für Taxifahrer typisch ist, navigieren Sie in einem Raster, in dem Sie sich nur nach links, rechts, oben und unten bewegen können. San Francisco ist jedoch sehr hügelig, sodass der Abstand zwischen zwei benachbarten Kreuzungen nicht unbedingt gleich ist. Genauer gesagt, der Abstand zwischen einem Schnittpunkt in der Höhe a
und eine benachbarte Kreuzung auf Höhe b
wäre 1 + |a - b|
. Ihr Ziel ist es, die kürzesten Wege von Ihrem Ursprung oben links auf der Karte zu Ihrem Ziel unten rechts zu finden.
Eingang
Ein zweidimensionales Gitter mit ganzzahligen Höhen, in welchem Format auch immer dies am zweckmäßigsten ist (zweidimensionales Array, eindimensionales Array mit Breite und / oder Höhe usw.).
Ausgabe
Eine Abfolge von Fahrtrichtungen, um in der unteren rechten Ecke der Eingabe von oben links in der kürzestmöglichen Entfernung anzukommen, wenn der Abstand zwischen zwei benachbarten Schnittpunkten von Höhen a
und Tiefen gegeben istb
ist durch die Formel gegeben 1 + |a - b|
. Bei mehreren Lösungen werden alle Lösungen ausgegeben.
Obwohl ich U
, D
, L
undR
für oben, unten, links und rechts in den folgenden Beispielen Ihr Programm kann alle vier verschiedene Zeichenketten verwenden , um die Richtungen darstellen, solange sie mit ihnen in und über allen Eingängen konsistent ist.
Beispiele
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
Dies ist Codegolf, daher gewinnt die Antwort mit der kürzesten Bytezahl.