도전
그리드 크기, 장애물 위치, 플레이어 위치 및 목표 위치가 주어지면 플레이어가 목표에 도달 할 수있는 경로를 찾고 동시에 장애물을 피해야합니다 (필요한 경우).
입력
- 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]
은 그리드의 왼쪽 상단에 있습니다. - 플레이어의 위치는 항상 그리드의 왼쪽에 있습니다.
- 대상의 위치는 항상 그리드의 오른쪽에 있습니다.
- 그리드에는 항상 하나 이상의 장애물이 있습니다.
- 장애물이 플레이어 나 목표 위치와 겹치지 않는다고 가정 할 수 있습니다.
- 반드시 최소 경로를 찾을 필요는 없습니다.
- 플레이어는 대각선이 아닌 왼쪽, 오른쪽, 위, 아래 만 움직일 수 있습니다.
- 편리한 방법으로 입력을받을 수 있습니다.
- 플레이어가 목표를 달성하기위한 경로가 항상 존재한다고 가정 할 수 있습니다.
- 분명히, 각 입력에 대해 유효한 경로가 여러 개 존재하면 하나를 선택하십시오.
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
COLS을 위해. 이미지의 좌표와 혼동하지 마십시오.
편집하다
로 @digEmAll 인해 규칙을 지적 #2
하고 #3
, playerY = 0
하고 targetY = N-1
. 따라서 원하는 경우 입력으로 만 사용할 수 있습니다 ( playerX
그리고 targetX
코드가 더 짧아지면).