Schreiben Sie ein Programm oder eine Funktion, die eine positive Ganzzahl aufnimmt und eine ASCII-Grafik eines Bogenschießpfeils ausgibt oder zurückgibt , der entsprechend der Eingabe skaliert ist.
Wenn der Eingang 1
der Ausgang ist
/\
/ \
\__/
||
||
||
||
||
||
||
||
/||\
/ || \
/ || \
// \\
/ \
Wenn der Eingang 2
der Ausgang ist
/\
/ \
/ \
/ \
\ /
\____/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
/| |\
/ | | \
/ | | \
/ | | \
/ | | \
/ |__| \
/ / \ \
/ / \ \
// \\
/ \
Wenn der Eingang 3
der Ausgang ist
/\
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\______/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
/| |\
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ |____| \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
// \\
/ \
Wenn der Eingang 4
der Ausgang ist
/\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\________/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
/| |\
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ |______| \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
// \\
/ \
Bei größeren Eingaben wird das Muster fortgesetzt - der Pfeil wird entsprechend vergrößert.
Beachten Sie, dass für jeden Eingang N:
- Die Pfeilspitze ist ein Fünfeck mit 2 × N Unterstrichen an der Basis, N Schrägstrichen an jeder der Seiten, die von der Basis ausgehen, und 2 × N Schrägstrichen an den beiden Seiten, die die Pfeilspitze bilden.
- Der Schaft (einschließlich des Teils innerhalb der Befiederung) besteht aus 11 × N Linien aus zwei vertikalen Balken, die durch 2 × (N-1) Zwischenräume voneinander getrennt sind. Die letzte Zeile enthält Unterstriche anstelle von Leerzeichen.
- Die Befiederung umgibt die unteren 3 × N Linien des Schachtes. Zwei Linien mit 2 × N Schrägstrichen erstrecken sich diagonal von beiden Seiten des Schachts nach unten und sind mit vertikalen Schrägstrichen verbunden.
- Der vollständige Pfeil ist 16 × N Zeilen hoch und 6 × N Zeichen breit.
In Ihrer Ausgabe sollten sich vor der Pfeilspitze keine Leerzeilen und nur bis zu einer nachgestellten Zeile befinden.
Keine der Ausgabezeilen sollte unnötige führende Leerzeichen enthalten (der linke Rand des Befiederungszeichens sollte so weit wie möglich links liegen), aber jede der Zeilen darf eine beliebige Anzahl von nachgestellten Leerzeichen enthalten.
Die kürzeste Übermittlung in Bytes gewinnt.
Antworten:
Pyth,
149147146144146Edit 2015-9-23: Fehler behoben für 2 Bytes. Könnte es möglich sein, kürzer zu machen, ich habe jetzt keine Zeit.
Scheint immer noch zu lang für eine Pyth-Antwort.
Erklärung (fast aktuell)
Grundsätzlich generiere ich die Transponierung des Pfeils, da das Zeilenformat viel einfacher ist. Außerdem erstelle ich eine Hälfte und kehre sie dann um, um viele Bytes zu sparen.
quelle
Perl, 298 Bytes
Mehrzeilig:
Ausgabe:
Vielen Dank an Dom Hastings, der mir geholfen hat, 5 Bytes zu sparen (und zu zählen)
quelle
$w=<>
Deklaration zum ersten Mal verschieben, wenn Sie sie verwenden,for$y(0..($w=<>)*16-1){
und viele der Klammern können entfernt werden (einige ändern die Ausgabe, aber ich denke, Sie gehen diese trotzdem durch!). Sie'_'
können auch nur ein wörtliches Wort sein_
. Ich hoffe, das hilft!Julia, 452 Bytes
Diese Antwort ist nicht sehr inspiriert und ich habe sie nicht über das Offensichtliche hinaus gespielt. Ich beabsichtige, dass dies eine Punktzahl ist, die andere Leute schlagen können.
Versuch es:
ungolfed:
quelle
Ruby, 233
Ich bin besonders zufrieden mit der Wraparound-Technik, mit der ich
\
mit einem einzigen Ausdruck (und ebenfalls für/
) alles in den Kopf gezeichnet habe.Ungolfed im Testprogramm
quelle