Vous êtes chauffeur de taxi à San Francisco. Comme c'est le cas pour les chauffeurs de taxi, vous parcourez une grille où les seules directions valides que vous pouvez déplacer sont la gauche, la droite, le haut et le bas. Cependant, San Fransisco est très vallonné, donc la distance entre deux intersections adjacentes n'est pas nécessairement la même. Plus précisément, la distance entre une intersection en altitude a
et une intersection adjacente en altitude b
serait 1 + |a - b|
. Votre objectif est de trouver tous les chemins les plus courts depuis votre origine en haut à gauche de la carte jusqu'à votre destination en bas à droite.
Contribution
Une grille bidimensionnelle d'altitudes entières dans le format le plus approprié (tableau bidimensionnel, tableau unidimensionnel avec largeur et / ou hauteur, etc.).
Production
Une séquence de directions à parcourir pour arriver dans le coin inférieur droit de l'entrée à partir du coin supérieur gauche dans la distance la plus courte possible étant donné la distance entre deux intersections adjacentes d'altitudes a
et b
est donnée par la formule 1 + |a - b|
. S'il existe plusieurs solutions, sortez toutes les solutions.
Bien que je l' utilise U
, D
, L
et R
pour haut, en bas, à gauche, et à droite dans les exemples ci - dessous votre programme peut utiliser les quatre chaînes distinctes pour représenter les directions tant qu'il est compatible avec eux et à travers toutes les entrées.
Exemples
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
Il s'agit de code-golf, donc la réponse avec le nombre d'octets le plus court l'emporte.