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 Xto wierszy i Ykols. Nie myl ich ze współrzędnymi na obrazie.
Edytować
Jak wskazano @digEmAll, ze względu na zasady #2oraz #3, playerY = 0i targetY = N-1. Tak więc, jeśli chcesz, możesz wziąć tylko jako dane wejściowe playerXi targetX(jeśli to skraca kod).
