Thử thách
Với kích thước lưới, vị trí của chướng ngại vật, vị trí người chơi và vị trí mục tiêu, nhiệm vụ của bạn là tìm đường dẫn để người chơi đến mục tiêu và tránh các chướng ngại vật cùng một lúc (nếu cần).
Đầu vào
- N : Kích thước lưới
N x N
- P : Vị trí tin tưởng
[playerposx, playerposy]
- T : Vị trí của mục tiêu
[targetposx, targetposy]
- O : Vị trí của chướng ngại vật
[[x1, y1], [x2, y2],...,[xn, yn]]
Đầu ra
Đường dẫn : Người chơi đường dẫn có thể sử dụng để tiếp cận mục tiêu[[x1, y1], [x2, y2],...,[xn, yn]]
Quy tắc
- Điểm
[0,0]
nằm ở góc trên cùng bên trái của lưới. - Vị trí của người chơi sẽ luôn ở phía bên trái của lưới.
- Vị trí của mục tiêu sẽ luôn ở phía bên phải của lưới.
- Lưới sẽ luôn có ít nhất một trở ngại.
- Bạn có thể cho rằng không có chướng ngại vật nào đè lên người chơi hoặc vị trí mục tiêu.
- Bạn không nhất thiết phải tìm đường dẫn tối thiểu.
- Người chơi chỉ có thể di chuyển sang trái, phải, trên và dưới không theo đường chéo.
- Bạn có thể lấy đầu vào theo bất kỳ cách thuận tiện.
- Bạn có thể cho rằng một đường dẫn để người chơi đến mục tiêu sẽ luôn tồn tại.
- Rõ ràng, đối với mỗi đầu vào, nhiều đường dẫn hợp lệ tồn tại, chọn một đường dẫn.
- Giả sử
N > 2
như vậy lưới sẽ ít nhất3 x 3
.
Ví dụ
Input: 9
, [6, 0]
, [3, 8]
, [[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
có thể xảy ra Output:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
Input: 6
, [1, 0]
, [3, 5]
, [[1, 2], [2, 5], [5, 1]]
có thể xảy ra Output:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
Ghi chú
Lưu ý rằng đó X
là cho các hàng và Y
cho cols. Đừng nhầm lẫn chúng với tọa độ trong một hình ảnh.
Biên tập
Như @digEmAll đã chỉ ra, do các quy tắc #2
và #3
, playerY = 0
và targetY = N-1
. Vì vậy, nếu bạn muốn, bạn chỉ có thể lấy làm đầu vào playerX
và và targetX
(nếu điều đó làm cho mã của bạn ngắn hơn).