Podając listę ścieżek, wypisz prawidłową ścieżkę.
Przykład ścieżki:
/\
----+/
|
-
i|
są to ścieżki poziome i pionowe./
i\
mają 90 ° obrotu.+
jest traktowany jako a-
lub w|
zależności od bieżącego kierunku.
Ścieżki mogą iść w dowolnym kierunku, a postać może być używana na wielu ścieżkach.
Dane wejściowe będą wyglądać następująco:
/--\
A------+--+--#
B------/ \--:
C------------#
D------------#
A
,B
,C
AD
to zaczyna się ścieżka#
jest ściana (ścieżka jest zła):
jest koniec (ścieżka jest poprawna)
Więc tutaj będzie wynik B
.
Możesz założyć:
:
i#
zawsze będzie dostępny od lewej.- Znak po prawej stronie początku ścieżki zawsze będzie
-
. - Ścieżki zawsze będą dobrze uformowane.
#
i:
zawsze będzie w tej samej kolumnie.- Zawsze będzie tylko jedna
:
i 4 ścieżki.
Przypadki testowe
A------#
B------#
C------#
D------:
=>
D
A-\ /---:
B-+-/ /-#
C-+---+-#
D-+---/
\-----#
=>
B
/-\
A-+\\---#
B-/\-\/-#
C----++-#
D----+/
\--:
=>
A
A-\
B-+\
C-++\/----#
D-+++//---:
\++-//--#
\+--//-#
\---/
=>
A
/-\
A-+-/-\
B-+-+-\--#
C-+-/ |/-#
D-\---++-#
\---+/
\--:
=>
B
Ponieważ jest to golf golfowy , wygrywa najkrótsza odpowiedź.
code-golf
ascii-art
path-finding
TuxCrafting
źródło
źródło
/
lub\
?:
zawsze będzie można dotrzeć od lewej strony, czy też można będzie do niego dotrzeć również od góry lub od dołu? Innymi słowy,#
czy:
w ostatniej kolumnie mogą znajdować się znaki inne niż ?Odpowiedzi:
Poślizg , 47 bajtów
Sprawdź to tutaj.
Tak, dla nieudokumentowanych funkcji ...
Wyjaśnienie
Slip jest w zasadzie dwuwymiarową składnią wyrażeń regularnych i domyślnie programy Slip drukują podzbiór dopasowanych danych wejściowych. W tym przypadku po prostu dopasowuję prawidłową ścieżkę. Aby zapobiec drukowaniu całej ścieżki, używam nieudokumentowanych
(?,...)
grup, które po prostu wskazują, że dopasowane znaki powinny zostać pominięte w danych wyjściowych.Jeśli chodzi o regex, niestety istnieje pewne powielanie, ponieważ
\
i/
należy go traktować inaczej w zależności od tego, czy poruszamy się w poziomie, czy w pionie. Na plus, ponieważ wiemy, że ścieżka zaczyna się i kończy poziomo, wiemy, że istnieje parzysta liczba\
lub/
na każdej ścieżce, dzięki czemu możemy dopasować dwie z nich na raz.źródło
:)
Python, 221 bajtów
Pierwsze wcięcie to tylko jedna spacja, w pętli while jest to tabulator.
źródło
JavaScript (ES6),
117104 bajtówPrzypadki testowe:
źródło
Rubinowy, 140 bajtów
Wypróbuj na repl.it: https://repl.it/CyJv
Nie golfił
źródło
Perl 211 bajtów
Nie golfowany:
To mój pierwszy golf Perl, więc sugestie są mile widziane :)
źródło