Hintergrund
Als ich jünger war, wurde mir eine Methode beigebracht, eine seltsame "S" -Form zu zeichnen, die ich (zusammen mit meinen Klassenkameraden) faszinierend fand. Heute habe ich es wiederentdeckt und aufgrund seines formelhaften Ansatzes beim Zeichnen gedacht, dass es zu einer interessanten Herausforderung führen könnte: P
Zeichnen des "S"
Das S kann folgendermaßen gezeichnet werden:
Zeichnen Sie zunächst zwei Reihen mit drei vertikalen Linien
| | |
| | |
Verbinden Sie als nächstes die linke obere Linie mit der unteren Mittellinie und die mittlere obere Linie mit der rechten unteren Linie, um zu produzieren
| | |
\ \
| | |
Zeichnen Sie zum Schluss oben und unten auf das aktuell gezeichnete Bild, damit es am Ende so aussieht
^
/ \
| | |
\ \
| | |
\ /
v
Wie Sie sehen, ergibt sich eine "S" -Form. Wenn es jedoch erweitert wird (Zeichnen mit mehr als 2 Zeilen), erzeugt es ein sehr interessantes Muster. Ihre Aufgabe ist es, dieses interessante Muster zu reproduzieren.
Aufgabe
Gibt eine Ganzzahl aus n >= 2
, in der das S mit den daraus n
zu erstellenden Zeilen ausgegeben wird . Die Ausgabe kann von einer Funktion zurückgegeben werden, und die Eingabe kann in Standardmethoden erfolgen. Das nachgestellte / führende Leerzeichen sowohl für das Gesamtbild als auch für jede Zeile ist in Ordnung. Führende Zeilenabstände müssen jedoch konsistent sein, damit "nicht unterbrochen wird. Sie können als Liste von Zeilen ausgeben.
Testfälle
input
output
---
2
^
/ \
| | |
\ \
| | |
\ /
v
---
8
^
/ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ /
v
---
10
^
/ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ /
v
Dies ist ein Code-Golf, also gewinnt der kürzeste Code! Viel Glück,
S
die Kühle S und fordert eine unendliche Version des einS Chain
Antworten:
Python 2 , 47 Bytes
Probieren Sie es online!
quelle
C # (.NET Core) ,
7369666462 BytesZwei Bytes weniger und ein perlartiges Erscheinungsbild dank Barodus. Haben Sie nicht daran gedacht, int zu verwenden? für Nullen.
Probieren Sie es online!
quelle
new string[n+1]
macht? Ich habe es noch nie gesehen.new string[n+1]
war eine Art kniffliger String-Konstruktor und keine Array-Deklaration -.-)Python 3 , 48
56 59 61BytesProbieren Sie es online!
quelle
\ \
.05AB1E ,
2726 BytesProbieren Sie es online!
Alternative 27-Byte-Version
Probieren Sie es online!
Erläuterung
quelle
'^…/ \©IF„| ûû„\ û}\®R'v).C
ohne hinzusehen .Japt ,
342523 BytesOnline testen! Ausgänge als Array von Zeilen;
-R
flag hinzugefügt, um in newlines beizutreten. (Danke @Shaggy)Ersterzweiter Versuch, könnte verbesserungsfähig sein ...Wie es funktioniert
quelle
SOGL V0.12 ,
262518 BytesProbieren Sie es hier aus!
Verwendet dieselbe Strategie wie die Japt-Antwort von ETHproductions
Erläuterung:
quelle
push "|" and " "
Was zum Teufel ist das eingebauteJavaScript (ES6), 60 Byte
Testschnipsel
Code-Snippet anzeigen
quelle
n=>' ^\n /${' \\ \\\n| | |\n'.repeat(n).slice(2)} \\ /\n v'
(mit Backticks und wörtlichen Zeilenumbrüchen)Kohle ,
272625 Bytes-1 Byte danke an Carlos Alejo. -1 Byte nur dank ASCII.
Probieren Sie es online! Link ist zur ausführlichen Version. # Kohle-Verbose-Obfucation
quelle
\r
Folgendes verwenden : `^ ⸿ / × \ ⸿ | | | ⸿ \ Iθ / ⸿ v`. Ausführliche Version .\r
wie man Newlines auf vernünftige Weise bekommt. Vielen Dank!Perl 5 ,
3937 BytesProbieren Sie es online!
Rasierte zwei Bytes mit @DomHastings Vorschlag
quelle
Eigentlich 49 Bytes
Probieren Sie es online!
Erläuterung:
quelle
05AB1E , 38 Bytes
Probieren Sie es online!
quelle
C (gcc) , 82 Bytes
Probieren Sie es online!
quelle
C # (.NET Core) ,
1017773 Bytes24 Bytes gespart dank i cri everytim !
4 Bytes gespart dank Kevin Cruijssen !
Probieren Sie es online!
Wie üblich ist das Wiederholen von Saiten in C # ein Schmerz.
quelle
--n>=0
zun-->0
unds+="/\n v";return s;
zu wechselnreturn s+"/\n v";
, um einige Bytes zu speichern.Retina , 38 Bytes
Probieren Sie es online!
Druckt eine Spalte mit führenden Leerzeichen und nachgestellten Leerzeichen in jeder Zeile.
Erläuterung
Die Einsparungen bei den Hauptbytes ergeben sich aus dem Weglassen der Leerzeichen in allen Literalteilen und dem Einfügen am Ende. Die Abbildung ist so strukturiert, dass es nie zwei Nicht-Leerzeichen nebeneinander gibt. Wenn Sie also alle entfernen, können Sie die Form fast fixieren, indem Sie an jeder Stelle am Ende ein Leerzeichen einfügen:
wird:
Das ist bis auf die Einrückung fast richtig. Dem
^
undv
fehlen zwei Leerzeichen. Das ist tatsächlich einfacher zu beheben, denn wenn wir nur ein explizites Leerzeichen vor jedem von ihnen einfügen, ergeben sich am Ende zwei zusätzliche Leerzeichen. Die Linien mit den Schrägstrichen sind kniffliger, weil sie nur einen zusätzlichen Platz benötigen. Um dies zu beheben, fügen wir dort ein Platzhalterzeichen ein (x
). Wenn wir die Leerzeichen am Ende einfügen, fügen wir sie nicht nur für jede leere Übereinstimmung ein, sondern passen sie optional anx
. Das heißt, anstatt ein Leerzeichen vor dem einzufügenx
, wird dasx
selbst ersetzt. Und dann wird es direkt nach dem noch ein leeres Streichholz gebenx
. Das heißt, jederx
Fügt genau ein Leerzeichen hinzu, ohne etwas anderes zu ändern. Wir möchten also Folgendes einrichten:was uns das gewünschte Ergebnis geben wird. Also hier ist der Code:
Konvertieren Sie die Eingabe in Unary.
Wandeln Sie jede
1
Zeile mit|||
undx\\
(und einem führenden Zeilenvorschub) in zwei Zeilen um .Fügen Sie die ersten beiden Zeilen mit
^
und einx/\
.Befestigen Sie das Finale,
x\\
indem Sie das Letzte\
in/
eine Linie verwandeln und eine Linie mit der anfügenv
.Ersetzen Sie jedes
x
oder leeres Streichholz durch ein Leerzeichen.quelle
Pyth, 46 Bytes
Testsuite.
quelle
%" ^\n / %s/\n v"*Q"\\\n| | |\n \
Pyth, 40 Bytes
Ziemlich ähnlich wie Steven Hewitt, aber unabhängig entwickelt.
Probieren Sie es online
Erläuterung
quelle
Pyth,
333231 BytesDanke Mr. Xcoder für ein Byte.
Probieren Sie es online aus: Demo oder Test Suite
quelle
Netzhaut , 45 Bytes
Dies ist eine ziemlich einfache Lösung.
Probieren Sie es online aus
Wenn die Grafik stattdessen 1-indiziert werden könnte, wäre sie etwas kürzer (44 Byte):
quelle
Pip ,
454233 BytesProbieren Sie es online!
Erläuterung
Der Code ist wirklich einfach, obwohl die Zeilenumbrüche das Lesen erschweren. Hier ist ein besserer Weg, um die Struktur zu sehen:
Das wiederholte Element in der S-Kette ist
Nehmen Sie dies als wörtliche Zeichenfolge und wiederholen Sie es
a
mal (wobeia
das erste Befehlszeilenargument ist). Dann stellen Sie das Präfix voran:und hänge das Suffix an:
und drucken.
(Ich mag, wie das irgendwie aussah wie ein> <> Programm.)
quelle
MATL ,
474443 Bytes-3 Bytes dank Giuseppe
Probieren Sie es online!
quelle
' ^' ' / \ 'XK'| | |'XJ`' \ \'JGq@-]KP' v'
ist 44 Bytes.Haskell, 53 Bytes
Probieren Sie es online!
quelle
Excel, 60 Bytes
quelle
PowerShell ,
83, 57 ByteProbieren Sie es online!
Per @ AdmBorkBork's Vorschläge,
for
durch einen Nummernkreis.;
und kombinierte Saiten.quelle
for
Schleife viel Golf spielen, indem Sie verwenden1..--$args[0]|%{ }
.";"
und es ist billiger, sie$s
vollständig zu entfernen . 57 Bytes1..$args
Gelegenheit verpasst habe . Ich bin mir nicht sicher, welche Etikette auf dieser Website richtig ist. Nehme ich Änderungen an meiner Antwort vor und schreibe Ihnen diese gut, oder veröffentlichen Sie Ihre Lösung als separate Antwort?AsciiDots , 88 Bytes
Probieren Sie es online!
quelle
Gelee , 32 Bytes
Langweilige Portierung von Lynns Python-Lösung .
Probieren Sie es online!
Erläuterung:
quelle
Eigentlich 30 Bytes
Dies funktioniert nach demselben Prinzip wie die Japt-Antwort von ETHproductions , bei der später zusätzliche Leerzeichen hinzugefügt werden und die gesamte Zeichenfolge zum impliziten Drucken in 5er-Zeilen aufgeteilt wird. Probieren Sie es online!
Ungolfing
quelle
Jelly ,
2523 BytesDies funktioniert nach demselben Prinzip wie die Japt-Antwort von ETHproductions , bei der später zusätzliche Leerzeichen hinzugefügt werden und die gesamte Zeichenfolge vor dem Drucken in Zeichenfolgen der Länge 5 aufgeteilt wird. Probieren Sie es online!
Edit: Ich wusste, dass es eine Möglichkeit gibt, die Ober- und Unterseite der S-Kette auf eine golferische Art und Weise zu verbinden. Danke an Erik den Outgolfer für -2 Bytes.
Ungolfing
quelle
“\|||\”ẋ“ ^ /“/ v”jKs5Y
Holzkohle , 25 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes.
quelle
↘^\|¶/|\|¶|F⊖N↘\|\|¶|↘\|/¶|\v
Bash, 67 Bytes
Probieren Sie es online aus
quelle
Java 8,
9376 BytesHafen von @IanH. Antwort von C # .NET, nachdem ich ein bisschen mehr Golf gespielt habe.
Probieren Sie es hier aus.
quelle
string
vs-var
Teil zu erwarten ist .n->
vsn=>
;)