Wyzwanie
Biorąc pod uwagę rozmiar siatki, pozycje przeszkód, pozycję gracza i pozycję docelową, Twoim zadaniem jest znaleźć ścieżkę, aby gracz mógł dotrzeć do celu i jednocześnie unikać przeszkód (jeśli to konieczne).
Wejście
- N : Rozmiar siatki
N x N
- P : Pozycja gracza
[playerposx, playerposy]
- T : Pozycja celu
[targetposx, targetposy]
- O : Pozycje przeszkód
[[x1, y1], [x2, y2],...,[xn, yn]]
Wynik
Ścieżka : Gracz ścieżki może dotrzeć do celu[[x1, y1], [x2, y2],...,[xn, yn]]
Zasady
- Punkt
[0,0]
znajduje się w lewym górnym rogu siatki. - Pozycja gracza zawsze będzie po lewej stronie siatki.
- Pozycja celu zawsze będzie po prawej stronie siatki.
- Siatka zawsze będzie miała co najmniej jedną przeszkodę.
- Możesz założyć, że żadna przeszkoda nie pokrywa się z pozycją gracza lub celu.
- Nie musisz koniecznie znaleźć minimalnej ścieżki.
- Gracz może poruszać się tylko w lewo, w prawo, w górę i w dół, a nie po przekątnej.
- Możesz pobrać dane wejściowe w dowolny wygodny sposób.
- Możesz założyć, że ścieżka do gracza zawsze będzie istniała.
- Oczywiście dla każdego wejścia istnieje wiele prawidłowych ścieżek, wybierz jedną.
- Załóżmy
N > 2
, że siatka będzie co najmniej3 x 3
.
Przykłady
Wejście: 9
, [6, 0]
, [3, 8]
, [[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
Możliwość wyjścia:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
Wejście: 6
, [1, 0]
, [3, 5]
, [[1, 2], [2, 5], [5, 1]]
Możliwość wyjścia:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
Uwaga
Zauważ, że dotyczy X
to wierszy i Y
kols. Nie myl ich ze współrzędnymi na obrazie.
Edytować
Jak wskazano @digEmAll, ze względu na zasady #2
oraz #3
, playerY = 0
i targetY = N-1
. Tak więc, jeśli chcesz, możesz wziąć tylko jako dane wejściowe playerX
i targetX
(jeśli to skraca kod).