チャレンジ
グリッドサイズ、障害物の位置、プレイヤーの位置、ターゲットの位置を考えると、プレイヤーがターゲットに到達し、同時に障害物を回避するためのパスを見つけることが必要です。
入力
- N:グリッドサイズ
N x N - P:プレイヤーの位置
[playerposx, playerposy] - T:ターゲットの位置
[targetposx, targetposy] - O:障害物の位置
[[x1, y1], [x2, y2],...,[xn, yn]]
出力
パス:パスプレーヤーはターゲットに到達するために使用できます[[x1, y1], [x2, y2],...,[xn, yn]]
ルール
- ポイント
[0,0]はグリッドの左上隅にあります。 - プレイヤーの位置は常にグリッドの左側になります。
- ターゲットの位置は常にグリッドの右側になります。
- グリッドには常に少なくとも1つの障害があります。
- プレーヤーまたはターゲットの位置に障害物が重なっていないと想定できます。
- 必ずしも最小パスを見つける必要はありません。
- プレイヤーは、左、右、上、下のみを斜めに移動することはできません。
- 任意の便利な方法で入力を取得できます。
- プレイヤーがターゲットに到達するためのパスは常に存在すると仮定できます。
- 明らかに、入力ごとに複数の有効なパスが存在するため、1つを選択します。
N > 2グリッドが少なくともであると仮定し3 x 3ます。
例
入力:9、[6, 0]、[3, 8]、[[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
可能な出力:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
入力:6、[1, 0]、[3, 5]、[[1, 2], [2, 5], [5, 1]]
可能な出力:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
注意
これXは行と列のYためです。それらを画像内の座標と混同しないでください。
編集
@digEmAllが指摘したように、ルール#2と#3、playerY = 0およびのためtargetY = N-1です。そのため、必要に応じて、入力としてのみplayerXとand targetXを使用できます(コードが短くなる場合)。
