Herausforderung
Bei gegebener Gittergröße, Hindernisposition, Spielerposition und Zielposition besteht Ihre Aufgabe darin, einen Weg für den Spieler zu finden, um zum Ziel zu gelangen und die Hindernisse gleichzeitig zu umgehen (falls erforderlich).
Eingang
- N : Gittergröße
N x N
- P : Position des Spielers
[playerposx, playerposy]
- T : Zielposition
[targetposx, targetposy]
- O : Positionen der Hindernisse
[[x1, y1], [x2, y2],...,[xn, yn]]
Ausgabe
Pfad : Ein Pfadspieler kann das Ziel erreichen[[x1, y1], [x2, y2],...,[xn, yn]]
Regeln
- Der Punkt
[0,0]
befindet sich in der oberen linken Ecke des Rasters. - Die Position des Spielers befindet sich immer auf der linken Seite des Gitters.
- Die Position des Ziels befindet sich immer auf der rechten Seite des Gitters.
- Das Gitter wird immer mindestens ein Hindernis haben.
- Sie können davon ausgehen, dass kein Hindernis den Spieler oder die Zielposition überlappt.
- Sie müssen nicht unbedingt den minimalen Pfad finden.
- Der Spieler kann sich nur nach links, rechts, oben und unten bewegen, nicht diagonal.
- Sie können die Eingabe auf jede bequeme Weise vornehmen.
- Sie können davon ausgehen, dass es immer einen Weg gibt, über den der Spieler zum Ziel gelangt.
- Offensichtlich gibt es für jede Eingabe mehrere gültige Pfade. Wählen Sie einen aus.
- Angenommen
N > 2
, das Gitter wird mindestens so sein3 x 3
.
Beispiele
Input: 9
, [6, 0]
, [3, 8]
, [[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
Mögliche Ausgabe:[[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]]
Mögliche Ausgabe:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
Hinweis
Beachten Sie, dass dies X
für Zeilen und Y
Spalten gilt. Verwechseln Sie sie nicht mit den Koordinaten in einem Bild.
Bearbeiten
Wie @digEmAll wies darauf hin, aufgrund Regeln #2
und #3
, playerY = 0
und targetY = N-1
. Also, wenn Sie möchten, können Sie nur playerX
und und als Eingabe nehmen targetX
(wenn das Ihren Code kürzer macht).