Виклик
Враховуючи розмір сітки, позиції перешкод, позицію гравця та цільову позицію, ваше завдання - знайти шлях для гравця, щоб дістатися до цілі та одночасно уникати перешкод (якщо це необхідно).
Вхідні дані
- N : розмір сітки
N x N - П : Позиція гравця
[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для знаків. Не плутайте їх з координатами на зображенні.
Редагувати
Як зазначав @digEmAll, через правила #2і #3, playerY = 0та targetY = N-1. Отже, якщо ви хочете, ви можете взяти за вхід лише playerXі і targetX(якщо це робить ваш код коротшим).
