Die Aufgabe
In dieser Herausforderung besteht Ihre Aufgabe darin, eine ASCII-Grafikdarstellung mehrerer Stapel von Kästen mit zunehmender Höhe zu zeichnen. Sie erhalten als Eingabe die Anzahl der Stapel, die eine positive ganze Zahl ist. Der erste Stapel enthält eine Schachtel Größe 2x2
. Der zweite Stapel enthält 2 Kartons 3x3
. Im Allgemeinen k
enthält der dritte Stapel k
Schachteln mit einer Größe (k+1)x(k+1)
.
Die Rahmen der einzelnen Kästchen werden anhand der Zeichen gezeichnet -|+
, und ihr Inneres besteht aus Leerzeichen. Benachbarte Boxen teilen ihre Ränder und Ecken sollten immer mit gezeichnet werden +
, auch wenn sie Teil eines Rahmens einer anderen Box sind.
Beispiele
Ausgabe für 1
:
++
++
Ausgabe für 2
:
+-+
| |
+-+
++ |
++-+
Ausgabe für 3
:
+--+
| |
| |
+--+
| |
+-+ |
| +--+
+-+ |
++ | |
++-+--+
Ausgabe für 5
:
+----+
| |
| |
| |
| |
+----+
| |
| |
| |
+---+ |
| +----+
| | |
| | |
+---+ |
| | |
| +----+
+--+ | |
| +---+ |
| | | |
+--+ | |
| | +----+
+-+ +---+ |
| +--+ | |
+-+ | | |
++ | | | |
++-+--+---+----+
Regeln und Wertung
Die Eingabe kann von STDIN als Befehlszeilenargument oder als Funktionsargument empfangen werden. Die Ausgabe muss auf STDOUT oder das nächstgelegene Äquivalent erfolgen. Es ist eine endliche Anzahl von nachgestellten Leerzeichen zulässig, ebenso wie vorangestellte und nachfolgende Zeilenumbrüche. Es dürfen jedoch keine zusätzlichen vorangestellten Leerzeichen vorhanden sein.
Das ist Code-Golf, also gewinnt die niedrigste Bytezahl. Standardlücken sind nicht zulässig.
n
undn-1
sind relativ erstklassig. Zwei Pluspunkte überschneiden sich nie.Integer.MaxValue
als Eingabe verwendet werden.Integer.MaxValue
oder gleich ist.Antworten:
CJam,
64 6058 BytesJede Spalte auf einmal konstruieren.
Probieren Sie es hier online aus
quelle
Java (
407349 Zeichen)Ein paar Zeichen dank @Zgarb und @Geobits
Code
Ich bin mir nicht sicher, ob dies optimal ist, aber es ist mein erster Versuch. Ich werde wahrscheinlich versuchen, es später in eine bessere Golfsprache zu bringen. Anregungen sind willkommen!
Erweitert
Schau es dir hier an.
quelle
&&
und||
durch&
und|
. 2)int
Deklarationen in dasfor
(for(int i=0,j,x,z;...
) verschieben. 3) Sie haben eine zu viele Zahnspangen am Ende Ihrer Golffunktion.a+1<=b+1
; Sie können durch ersetzt werdena<=b
.q*q+1
sollte wahrscheinlich nur einer anderen Variablen zugewiesen werden. Sie verwenden es 9 Mal oder so, und Sie könnten einen Haufen sparen, indem Siea=q*q+1
einmal sagen . Ist auchq*(q+1)
geradeq*q+q
.Python 2,
144128 BytesEin bisschen herumzudrehen. Überall ein bisschen herumwirbeln.
quelle
Python, 188 Bytes
Berechnet mathematisch das Zeichen an jeder
x,y
Position. Es war schwierig, das+
s auf beiden Seiten jeder Schachtel zu drucken und das rechte+
s dern+1
Schachteln zu stoppen .quelle
long
das hat keine Obergrenze.C # - 304 Bytes (Funktion)
oder 363 Bytes (vollständiger Code)
Ich habe versucht, if-Aussagen zu vermeiden. Ungolfed:
quelle
long
stattdessen verwenden.Ruby (205 Byte)
Nimmt die Nummer als Befehlszeilenargument. Es beginnt mit fehlgeschlagenen Zeilenumbrüchen, aber das ist erlaubt.
quelle
JavaScript (ES6), 293 Byte
Ich habe dies in Firefox ausgeführt. Ignorieren Sie das, was
"
die Konsole zwischen den Strings hinzufügt. Das sind hauptsächlich ES5-Sachen, aber ich werde versuchen, dies mehr zu tun.Ungolfed / ES5
quelle
Python 2,
294,290Ich habe es zum Laufen gebracht, aber ich muss noch mehr Golf spielen. Ich bin so glücklich, das war hart (zumindest für mich)!
Ich werde wahrscheinlich später eine Erklärung hinzufügen, es sei denn, es ist jemandem sofort klar ...? Ich bezweifle es irgendwie.
Probieren Sie es hier aus
quelle
Python - 243 Bytes
Erzeugt alle Spalten, wobei die Überlappungen der Spalten mit Ausnahme der ersten ersetzt werden. Dann wird mit Leerzeichen aufgefüllt, transponiert und gedruckt.
Ich überlege, nach Pyth zu übersetzen, benötige aber einen Ersatz für die Pad-Funktion.
quelle