Bestimmen Sie anhand eines Richtungsgitters sowie einer Start- und Endposition die Mindestanzahl von Ersetzungen im Richtungsraster, die vorgenommen werden müssen, um den Pfad zwischen den beiden Punkten zu vervollständigen. Das Gitter ist doppelt zylindrisch. Dies wird anhand eines Beispiels klarer.
Beispiel
Nehmen wir als Beispiel das folgende Raster:
>>>>v
>>>><
<<<<<
Beginnen wir bei (1, 1)
und enden bei (1, 3)
(wo die Koordinaten sind (x, y)
oder (col, row)
, wobei die obere Zeile und die linke Spalte sind 1
). Eine mögliche Lösung besteht darin, das (1, 1)
und (1, 2)
durch zu ersetzen v
, sodass das endgültige Raster folgendermaßen aussieht:
v>>>v
v>>><
<<<<<
Ausgehend von (1, 1)
würde uns der Weg führen (1, 3)
. Es gibt jedoch eine kürzere Lösung, die ersetzt (5, 2)
werden v
muss. Das endgültige Raster lautet also:
>>>>v
>>>>v
<<<<<
Ausgehend von (1, 1)
führt ein ziemlich langer Weg zu (1, 3)
.
Das Ersetzen von allem in der obersten Reihe durch ^
funktioniert auch (danke @Spitemaster).
Eingang
Die Eingabe besteht aus einem rechteckigen Raster mit 4 möglichen Werten sowie zwei Koordinaten. Sie können das Raster in jedem vernünftigen Format verwenden. Beispiel: Zeichen- oder Ganzzahlmatrix, Zeichenfolgenliste usw. Sie können auch die Abmessungen des Rasters anfordern. Sie können die Koordinaten in jedem vernünftigen Format verwenden. Beispiel: Ganzzahlpaar, komplexe Zahl usw. Sie können zwischen 0- und 1-Indizierung wählen.
Ausgabe
Die Ausgabe sollte eine einzelne Ganzzahl sein, die minimale Anzahl von Gitterersetzungen, die erforderlich sind, um den Pfad vom Anfang bis zum Ende zu schließen.
Regeln und Spezifikationen
- Standardschlupflöcher gelten
- Das Gitter ist doppelt zylindrisch, was bedeutet, dass die Bewegung von oben nach unten, von links nach links nach rechts usw. erfolgt.
Beispielfälle
Die Beispielfälle werden als Zeichenmatrix und 1-indizierte Koordinaten angegeben.
Fall 1
Eingang
>>>>v
>>>><
<<<<<
1 1
1 3
Ausgabe
1
Erläuterung
Siehe Beispiel.
Fall 2
Eingang
<<<<<
v>v>v
>>>>>
1 1
5 3
Ausgabe
1
Erläuterung
Sie können entweder (1, 1)
mit v
oder (2, 1)
mit ersetzen v
. Im ersten Fall (1, 1)
geht der Pfad ausgehend geradeaus und dann rechts zum Ziel. Im zweiten Fall schlängelt sich der Pfad von links nach rechts, erreicht (2, 1)
, geht nach unten, rechts, unten und dann nach rechts, bis er das Ziel erreicht.
Fall 3
Eingang
^^^^^^
><<>>>
vvvvvv
2 2
5 2
Ausgabe
2
Erläuterung
Die beste Änderung besteht darin, die mittlere Reihe links bis zum Punkt zu wickeln. Das heißt, machen Sie das erste und letzte Element in der mittleren Reihe <
. Alternativ machen 2 2
und 3 2
beides >
.
Dies ist eine Code-Golf- Herausforderung, also gewinnt der kürzeste Code!
><
? Ping Pong hin und her (so dass beide Positionen erreicht sind) oder ist es so, als ob sich zwischen ihnen eine Wand befindet?
^
oder ändernv
.