Wyzwanie polega na podążeniu (narysowaniu) ścieżki:
^n
- w górę o n liniivn
- w dół o n linii>n
- bezpośrednio o n pozycji znaków<n
- pozostawione przez n znaków pozycji
n
jest liczbą całkowitą większą niż zero (tzn. nie można otrzymać polecenia takiego jak>-2
).- Nie ma żadnych separatorów między poleceniami, dobrze sformułowane dane wejściowe wyglądają tak:
>5v8<10^3
żadna inna forma wprowadzania danych jest niedozwolona. - Liczba poleceń jest nieograniczona.
- Żadne znaki nie powinny wkradać się do wejścia.
Przykłady
Dane wejściowe to pusty ciąg, dane wyjściowe:
*
Wejście jest albo
>3
albo<3
: Zauważ, że nie ma żadnej różnicy, do wyjścia:****
Podobne dla
^3
iv3
:* * * *
Wejście:,
>1v2
wyjście:** * *
Wejście:,
^4>3v2<1
wyjście:**** * * * ** * *
Jeśli wrócisz i skorzystasz z tej samej ścieżki, nie rysuj niczego nowego. Na przykład
>5<5
******
... chociaż nie rysujesz nic nowego, oczywiście zmieniasz pozycję. Dlatego jeśli dane wejściowe wyglądają tak:
>4<2v3
dane wyjściowe to:***** * * *
Jest to bardziej złożony przykład: 1) ścieżka może się przecinać 2) zauważ, że trzy ostatnie kroki ostatniego polecenia przesuwają całą ścieżkę w prawo. Wejście:,
v6>4^3<7
wyjście:* * * ******** * * * * *****
Wejście :
^2v2>3<3v3>4^5v5>3^5>4v2<4v3>4^3v3>3^5>4v2<4v3>7^5>4v2<4v3>9^3<2^2v2>4^2v2<2v3>8^5>2v4>2^4v5<3>6^5>5<5v2>5<5v2>5<4v1>8^3<1^2v2>1v2>2^3v3>2^2>1^2v2<1v3<3>11^3<2^2v2>4^2v2<2v3>5^5>5<5v2>5<5v2>5<4v1>7^5>4v2<4v3>4^3v3>3^5>4v2<3v1<1v2>3^1>1v1
Wynik:
* * ***** ***** ***** * * *** * ****** * * * * ****** ***** ***** * * * * * * * * * * * * * * * * * * * * * * * * ***** ***** ***** ***** ***** * * * ****** ** * ** ***** ****** ***** ***** * * * * * * * * * * * * * * * * * * ** * * * * * * * * *** ****** ***** * ****** * * * ** *******************************************************************************************
^2v2>3<3v3>4^5v5>3^5>4v2<4v3>4^3v3>3^5>4v2<4v3>7^5>4v2<4v3>9^3<2^2v2>4^2v2<2v3>8^5>2v4>2^4v5<3>6^5>5<5v2>5<5v2>5<4v1>8^3<1^2v2>1v2>2^3v3>2^2>1^2v2<1v3<3>11^3<2^2v2>4^2v2<2v3>5^5>5<5v2>5<5v2>5<4v1>7^5>4v2<4v3>4^3v3>3^5>4v2<3v1<1v2>3^1>1v1
.Odpowiedzi:
MATL , 71 bajtów
Używa bieżącej wersji (6.0.0) języka / kompilatora. Działa w Matlabie i Octave.
EDYCJA (21 czerwca 2016 r.): Ze względu na zmiany języka, kod wymaga kilku modyfikacji, aby uruchomić się w bieżącej wersji (16.0.0). Możesz wypróbować online, w tym niezbędne modyfikacje.
Przykłady
Wyjaśnienie
Program składa się z czterech głównych kroków:
[0 -1]
wskazuje jeden krok w lewo. Pierwszy wiersz to początek ścieżki,[1 1]
*
. Normalizuj do wartości minimalnej1
1
współrzędne wskazane przez matrycę z kroku 3 lub w0
inny sposób. Jest to następnie przekształcane w macierz char.Kod:
źródło
JavaScript (ES6), 204
211 210Edycja 1 Poprawka błędu - wyjście „*” dla nieważnych danych wejściowych
Edycja 2 Prostsze dekodowanie kierunku do różnic x i y
Oto moja odpowiedź na mapę skarbów , zmienioną w celu spełnienia specyfikacji.
Mniej golfa i mniej więcej wyjaśnione
Test
źródło
*
.Perl, 174 bajty
Oczekuje danych wejściowych jako argumentu wiersza poleceń. Podaj argument!
Przykład:
perl 177.pl "<1^2>3v4<5^6>7v8<9^10>11"
Nieco czytelne:
źródło
05AB1E , 27 bajtów
Wypróbuj online! (2020 jest wystarczająco blisko, więc dlaczego nie)
źródło