あなたはサンフランシスコのタクシー運転手です。タクシードライバーの典型であるように、移動できる有効な方向は左、右、上、下のみであるグリッドをナビゲートしています。ただし、サンフランシスコは非常に丘が多いため、2つの隣接する交差点間の距離は必ずしも同じではありません。より具体的には、高度a
での交差点と隣接する高度での交差点間の距離b
はになります1 + |a - b|
。あなたの目標は、地図の左上の出発地から右下の目的地までの最短経路をすべて見つけることです。
入力
最も便利な形式の整数高度の2次元グリッド(2次元配列、幅や高さを持つ1次元配列など)。
出力
最短距離高度の二つの隣接する交点間の距離与えで左上から入力の右下隅に到達する旅行への方向の配列a
とb
の式で与えられます1 + |a - b|
。複数のソリューションがある場合、すべてのソリューションを出力します。
私が使用していますがU
、D
、L
、およびR
アップのために、下、左、右、それが中に、すべての入力間にそれらと一致しているとして、方向を表すために、任意の4つの別個の文字列を使用することができ、あなたのプログラム以下の例インチ
例
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
これはコードゴルフなので、バイト数が最も少ない答えが勝ちです。
1
高度は常に10未満ですか?(それらは例にありますが、常にそうなりますか?)
—
ダダ
@Dadaは、高度が必ずしも10未満であるとは限りません(マイナスになることもあります)。それに応じて例を更新しました。
—
0
この投稿がアクティブだったのを見たとき、私は興奮していた-誰かがタクシーで答えを投稿したと思った!多分1日
—
スペースジャンク