Die Herausforderung besteht darin, dem Pfad zu folgen (zu zeichnen):
^n
- um n Zeilen nach obenvn
- um n Zeilen nach unten>n
- Rechts von n Zeichenpositionen<n
- links von n Zeichenpositionen
n
ist eine ganze Zahl, größer als Null (dh Sie können keinen Befehl wie erhalten>-2
).- Es gibt keine Trennzeichen zwischen den Befehlen. Die wohlgeformte Eingabe sieht folgendermaßen aus: Es
>5v8<10^3
ist keine andere Form der Eingabe zulässig. - Die Anzahl der Befehle ist unbegrenzt.
- Es dürfen sich keine Zeichen mehr in die Eingabe einschleichen.
Beispiele.
Eingabe ist eine leere Zeichenfolge, Ausgabe:
*
Die Eingabe ist entweder
>3
oder<3
: Beachten Sie, dass dies für die Ausgabe keinen Unterschied macht:****
Ähnlich für
^3
undv3
:* * * *
Eingang:
>1v2
Ausgang:** * *
Eingang:
^4>3v2<1
Ausgang:**** * * * ** * *
Wenn Sie zurückgehen und denselben Pfad verwenden, zeichnen Sie nichts Neues. Z.B
>5<5
******
... obwohl du nichts neues zeichnest, änderst du offensichtlich die Position. Wenn Ihre Eingabe also so aussieht:
>4<2v3
lautet die Ausgabe:***** * * *
Dies ist ein komplexeres Beispiel: 1) Der Pfad kann sich selbst kreuzen. 2) Beachten Sie, dass die letzten drei Schritte des letzten Befehls den gesamten Pfad nach rechts verschieben. Eingang:
v6>4^3<7
Ausgang:* * * ******** * * * * *****
Eingabe :
^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
Ausgabe:
* * ***** ***** ***** * * *** * ****** * * * * ****** ***** ***** * * * * * * * * * * * * * * * * * * * * * * * * ***** ***** ***** ***** ***** * * * ****** ** * ** ***** ****** ***** ***** * * * * * * * * * * * * * * * * * * ** * * * * * * * * *** ****** ***** * ****** * * * ** *******************************************************************************************
^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
.Antworten:
MATL , 71 Bytes
Verwendet die aktuelle Version (6.0.0) der Sprache / des Compilers. Arbeitet in Matlab und in Octave.
BEARBEITEN (21. Juni 2016): Aufgrund von Änderungen in der Sprache sind für die Ausführung des Codes in der aktuellen Version (16.0.0) einige Änderungen erforderlich. Sie können es online mit den erforderlichen Änderungen ausprobieren .
Beispiele
Erläuterung
Das Programm besteht aus vier Hauptschritten:
[0 -1]
einen Schritt nach links an. Die erste Reihe ist der Ursprung des Pfades,[1 1]
*
. Auf minimalen Wert normalisieren1
1
an den von der Matrix aus Schritt 3 angegebenen Koordinaten enthält0
. Dies wird dann in eine Zeichenmatrix umgewandelt.Code:
quelle
JavaScript (ES6), 204
211 210Edit 1 Bugfix - Ausgabe '*' für ungültige Eingabe
Edit 2 Einfachere Decodierung der Richtung in x- und y-Diff
Hier ist meine Antwort auf Die Schatzkarte , überarbeitet, um die Spezifikationen zu erfüllen.
Weniger golfen und mehr oder weniger erklärt
Prüfung
quelle
*
.Perl, 174 Bytes
Erwartet Eingabe als Befehlszeilenargument. Achten Sie darauf, das Argument zu zitieren!
Beispiel:
perl 177.pl "<1^2>3v4<5^6>7v8<9^10>11"
Etwas lesbar:
quelle