Ihre Aufgabe ist es, ein Programm oder eine Funktion zu erstellen, die als Eingabe eine natürliche Zahl ( n
) zwischen 1 und 25 (einschließlich) verwendet und eine isometrische Darstellung einer Rutsche und einer Leiter mit der n
Anzahl der Sprossen ausgibt.
Leiter- und Rutschenspezifikationen
Die Leiter ist immer links und die Rutsche rechts ausgerichtet. Wir betrachten es von der Leiterseite aus, sodass ein Teil der Folie in den oberen drei Ebenen verdeckt ist. Die Sprossen werden durch vier Striche ( ----
) und die Seiten der Leiter dargestellt und gleiten durch Schrägstriche ( /
und \
). Das folgende Diagramm zeigt die Platzverhältnisse für einen Objektträger mit fünf Sprossen.
Slide Blank space count
/----/\ 1234/----/\
/----/ \ 123/----/12\
/----/ \ 12/----/1234\
/----/ \ \ 1/----/1\1234\
/----/ \ \ /----/123\1234\
Beispiele
>>1
/----/\
>>3
/----/\
/----/ \
/----/ \
>>4
/----/\
/----/ \
/----/ \
/----/ \ \
>>10
/----/\
/----/ \
/----/ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
Dies ist Codegolf, daher gewinnt die Antwort mit der niedrigsten Bytezahl.
Hinweis: Der nachgestellte Leerraum ist in der Ausgabe zulässig, solange er die Zeilenlänge nicht überschreitet.
Antworten:
Retina ,
817252 BytesDie Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Probieren Sie es online!
Erläuterung
Das Programm besteht aus vier Stufen, die alle aus Regex-Substitutionen bestehen (mit einigen Retina-spezifischen Merkmalen). Ich werde die Eingabe
5
als Beispiel für die Erklärung verwenden.Bühne 1
Dies wandelt die Eingabe
n
inn
Leerzeichen um, gefolgt von/\ \
der Spitze der Leiter / Folie:Im Moment zeigen wir nur die Folie vollständig und stellen die Leiter nur mit der linken Hand dar
/
.Stufe 2
Leider sind
n
Leerzeichen eins mehr als wir brauchen, deshalb entfernen wir das erste Zeichen wieder. Wir haben jetzt:Stufe 3
Zeit, die gesamte Struktur zu erweitern. Zu wissen, wo sich das Dach befindet, reicht aus, um das Ganze zu bauen, denn wir können es einfach um jeweils eine Zeile verlängern und die Leiter und die Rutsche um zwei Felder auseinander bewegen.
Das
+
weist Retina an, diese Phase in einer Schleife zu wiederholen, bis sich die Ausgabe nicht mehr ändert (in diesem Fall, weil der reguläre Ausdruck nicht mehr übereinstimmt). Was den regulären Ausdruck selbst betrifft, stimmen wir einfach mit der/
letzten Zeile und allem danach überein und stimmen auch mit einem Leerzeichen davor überein, was bedeutet, dass dies nicht mehr übereinstimmen kann, sobald/
die erste Spalte erreicht ist.Folgendes ersetzen wir durch:
Bei jeder Iteration wird die Zeichenfolge also um eine Zeile erweitert, bis Folgendes erreicht wird:
Stufe 4
Alles was übrig bleibt, ist die Leiter nach rechts zu bringen. Das ist ganz einfach: Wir passen nur die
/
und die nächsten 5 Zeichen an und fügen die richtige Leiterdarstellung ein, wodurch die Folie oder die bereits vorhandenen Leerzeichen überschrieben werden:quelle
V ,
38, 37, 36, 34, 33, 32, 31, 30,29 BytesProbieren Sie es online!
Ich könnte Osabie einholen. Ein Byte kürzer als Osabie.Ein Byte kürzer!\o/
Gebunden mit 2sable!In anderen Nachrichten ist dies definitiv der längste durchgestrichene Header, den ich je gemacht habe.
Erläuterung:
Dies wird ausgeführt, bis ein Fehler auftritt, der dank des Befehls "Nach links bewegen" ("h") "arg1" -mal ist.
Jetzt müssen wir nur noch das innere Bein hinzufügen
Nicht konkurrierende Version (28 Bytes)
quelle
Pyth,
3935 BytesErläuterung:
Hier testen
quelle
2sable ,
40363230 BytesHmmm, V kommt furchtbar nahe ...
Verwendet die CP-1252- Codierung. Probieren Sie eine 05AB1E-kompatible Version aus! .
quelle
:P
PowerShell v2 +,
999082 BytesÜbernimmt die Eingabe
$n
, startet eine Schleife von1
bis$n
mit|%{...}
. Bei jeder Iteration konstruieren wir einen String. Wir beginnen mit der entsprechenden Anzahl von Plätzen" "*($n-$_)
und der Leiter"/----/"
.Dazu fügen wir eine weitere Zeichenfolge hinzu, die geschnitten
[...]
und-join
wieder zusammengefügt wurde. Die zweite Zeichenfolge ist die Folie, und wir gehen davon aus, dass die gesamte Folie immer sichtbar ist. Dies ist die Anzahl der Leerzeichen, bevor die Folie gestartet wird" "*($_+$i++)
, gefolgt von der Folie selbst"\ \"
. Dies wird durch einen Bereich aufgeschnitten, der als Teil der "Felder plus Folie" berechnet wird, der teilweise von der Leiter verdeckt wird.Beispiele
quelle
:D
\golfing
Ordner muss sehr gut organisiert sein._.
Python 2 -
797675 BytesVielen Dank an Hubert Grzeskowiak, der mich "disqualifiziert" hat, da mein Programmdruck tatsächlich 3 Bytes eingespart hat! Danke auch an Eʀɪᴋ ʀɪᴋ Gᴏʟғᴇʀ für das Speichern von 1 weiteren Byte!
quelle
def f(x):
durchx=input()
und entfernen Sie den Einzug in der zweiten Zeile. Das erspart Ihnen 1 Byte.Vim, 71 Tastenanschläge
Das ist so dumm, aber es macht ein bisschen Spaß. Die Eingabe erfolgt als Textdatei mit einer einzelnen Zeile, die eine Ganzzahl enthält. Dies ist wahrscheinlich ziemlich golferisch, aber es wird fürs Erste reichen ( Bearbeiten: Umgeschalteter Stil von Steuerzeichen auf Anfrage ):
<c-v>
,<esc>
Und<cr>
sind alle einzelnen Tastenanschläge; Strg + v, Escape und Wagenrücklauf (Eingabe). Für eine einfache Version mit den richtigen Literale zu verdauen, hier ist die Dateiladder.keys
laufen zwarxxd
:Um es auszuprobieren (nix mit den entsprechenden Tools vorausgesetzt), führen Sie es aus
xxd -r
und fügen Sie es in die Datei einladder.keys
. Erstellen Sie eine Dateiladder.txt
mit einer Ganzzahl. Dann mach:quelle
^V
wie<c-v>
hier.Bash, 61
Wo
^M
ist ein wörtlicher Wagenrücklaufquelle
/
und "\" in der 4. Reihe und 1 Leerzeichen weniger zwischen den Folienrändern haben.JavaScript (ES6), 79 Byte
Arbeiten Sie, indem Sie eine Reihe von
n
Leerzeichen verwenden, dann eine exotische Substitution durchführen, um die Folie mit einer Stütze zu versehen, und dann die Stütze durch eine Leiter ersetzen.quelle
Ruby, 61 Bytes
Ungolfed
Ich könnte zwei Bytes einsparen, indem ich für die Formatzeichenfolge
'%*s\ \^M%*s----/'
(wo^M
ist ein wörtlicher Wagenrücklauf) verwende, aber dann gibt Ruby die Warnung aus "warning: encountered \r in middle of line, treated as a mere space
" aus. ¯ \ _ (ツ) _ / ¯Vorherige Lösung (64 Bytes)
quelle
Batch, 194 Bytes
Es hat sich als recht einfach herausgestellt: Folie einrücken, die ersten 7 Zeichen entfernen, Leiter einrücken, das führende Leerzeichen entfernen. Dieses letzte Stück ist allerdings ein wenig trickreich!
quelle
Java, 116 Bytes
Leider können Sie Strings in Java nicht [leicht] duplizieren, sodass ich am Ende die Formatierungsfunktion missbrauche.
quelle
Scala, 95 Bytes
quelle
Haskell, 81 Bytes
quelle
do i<-[1..n];a(n-i)++"/----/"++drop 7(a(2*i)++"\\ \\\n")
spart zwei Bytes.eacal , nicht konkurrierend , 386 Bytes
Ich habe offiziell die ausführlichste Sprache möglich gemacht.Ich machte den Kommentar im Scherz und im Sarkasmus. Bitte beruhigen. Anweisungen zum Ausführen des im Header verlinkten Github-Repos.Ungolfed
quelle