Dieser Wettbewerb ist vorbei. Vielen Dank für die interessanten Nicht-Esolang-Einträge und herzlichen Glückwunsch an Jakuje für seine erfolgreiche JavaScript-Einsendung.
In der großen Tradition der ASCII Art Challenges auf dieser Site finden Sie hier eine weitere. Zeichnen Sie bei einer Eingabe eine Spirale.
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Einfach, ja? Heh, heh, heh ... Ja ...
(Inspiriert vom ASCII Dragons Curve- Post und den ASCII Art of the Day- Posts des Optimizers )
Eingang
Die Eingabe erfolgt in Form einer Reihe von Parametern, die aus dem üblichen STDIN / Funktionsargument / usw. Stammen und aus vier Teilen bestehen. Diese Teile können aus vier separaten Argumenten, einem Vierfachen, einem Array der Größe 4 usw. bestehen. Der Einfachheit und Konsistenz halber werde ich die Eingabe als ein einzelnes Wort darstellen.
- Eine Ganzzahl
2 ≤ x ≤ 20
, die die Größe der Spirale in Form von "Quadraten" angibt, wobei jedes gedruckte Zeichen ein "Quadrat" darstellt. Theoretisch könnte dies einen enormen Umfang haben, aber angesichts der Tatsache, dass wir ASCII-Kunst zeichnen, wird eine sichere Obergrenze von 20 festgelegt, damit sie auf den Bildschirm passt. - Ein einzelner Buchstabe von
d u r
oderl
, der die anfängliche Bewegung vom Startquadrat (abwärts, aufwärts, rechts, links) anzeigt. - Ein optionales Symbol
c
, das "gegen den Uhrzeigersinn" anzeigt. Wenn dasc
weggelassen wird, nehmen Sie eine Drehung der Spirale im Uhrzeigersinn an. - Eine letzte Ganzzahl
1 ≤ y ≤ 10
, die angibt, wie oft die Spiralzeichnung wiederholt werden soll, wobei das Endquadrat der vorherigen Spirale als Startquadrat des neuen verwendet wird. Ich wähle eine Obergrenze von 10, weil ich möchte, dass die Zeichnung irgendwann fertig wird. - Einige Beispieleingaben:
20lc5
13d2
2rc1
Es ist von Interesse, dass ungerade Werte für die Größeneingabe dazu führen, dass @
immer der exakte Mittelpunkt einer Spirale ist. Gerade Werte können jedoch in Abhängigkeit von der Anfangsrichtung in jeder der vier diagonalen Richtungen den Startquadratversatz aufweisen Reise. Dies kann zu einigen ... interessanten ... Mustern führen. Siehe die zwei geraden Beispiele unten.
Eingaben, die nicht der Eingabespezifikation entsprechen (z. B. 11q#s
), sind undefiniert, und ich erwarte, dass das Programm entsprechend gesperrt wird. :)
Ausgabe
Bei der Ausgabe handelt es sich um eine druckbare ASCII-Ausgabe über sprachäquivalentes STDOUT mit den folgenden Spezifikationen:
- Das Startquadrat (jeder Rekursion) muss mit einem At-Zeichen gekennzeichnet sein
@
. - Das letzte "Quadrat" muss mit einem kaufmännischen Und markiert werden
&
. Bei mehreren Rekursionen sollte nur das letzte "Quadrat" markiert werden&
. - Ecken der Spiralbahn müssen mit in Fahrtrichtung "zeigen"
< > v ^
. - Die vertikale Bewegung muss durch Rohre erfolgen
|
. - Die horizontale Bewegung muss mit Bindestrichen gezeichnet werden
-
. - "Quadrate", die durch spätere Rekursionen überschrieben werden, sollten die aktuellste Fahrtrichtung anzeigen. Dies führt dazu, dass "neuere" Rekursionen scheinbar über die "älteren" Rekursionen gelegt werden. Siehe das folgende
4rc3
Beispiel. - Ein abschließender Zeilenumbruch ist in Ordnung, führende Leerzeichen können ein Muss sein und sind daher zulässig, abschließende Leerzeichen sind jedoch nicht zulässig.
- Ich werde Sie nicht andocken, wenn Sie Escapesequenzen verwenden, um die ASCII-Grafik für STDOUT zu zeichnen, aber ich werde stumm von Ihnen enttäuscht sein. (Sie sind weiterhin berechtigt, die Prämie zu erhalten, wenn Sie sie verwenden.)
Beispiele
2d4
= Durchmesser von 2, beginnt im Uhrzeigersinn, 4 Rekursionen
&@@@@
^<<<<
In diesem Beispiel beginnt die Zeichnung oben rechts @
, geht eine nach unten, eine nach links und eine nach oben. An diesem Punkt haben wir den 2d
Teil beendet und beginnen die 2. Rekursion, so dass wir einen weiteren haben, einen nach @
unten, einen nach links, einen nach oben; dann die 3. Rekursion; dann der 4. und endlich unser &
.
4rc3
= Durchmesser von 4, rechts beginnend, gegen den Uhrzeigersinn, 3 Rekursionen
&--<
v-<|
|@^|<
>--^|
|@^|<
>--^|
|@^|
>--^
In diesem Beispiel beginnt die Zeichnung unten @
, verläuft eine nach oben und spiralförmig nach rechts, bis sie die Mitte erreicht @
und den 4rc
Abschnitt beendet. Dies wird dann noch zweimal wiederholt, um die vollen 3 angeforderten Rekursionen zu erhalten. Beachten Sie, dass 4rc1
dies nur der obere linke 4x4-Block in diesem Beispiel ist.
7u1
= Durchmesser von 7, beginnt im Uhrzeigersinn, 1 Rekursion (beachten Sie, dass dies dasselbe ist wie das Intro)
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Gewinnen & Einschränkungen
Das ist Code Golf, also gewinnt die kleinste Antwort in Bytes. Die Einreichung sollte in der üblichen Form von Programm / Funktion / CJam Code Block / etc. Erfolgen. Es gelten die üblichen Lückenbeschränkungen. Berufskraftfahrer auf geschlossenem Kurs. Wenn die Reizung anhält, stellen Sie die Anwendung ein und konsultieren Sie Ihren Arzt.