Ihre Arbeit besteht darin, dieses Kunstwerk nachzubauen:
_____
|
|
|
|
_____|
|
|
|
|
_____|
|
|
|
|
_____|
|
|
|
|
_____|
Die Antwort muss dies neu erstellen und als Ergebnis ausdrucken. Alle Sprachen erlaubt, kein direkter Druck von Kunstwerken, ofc, ein gewisses Maß an Manipulation ist erforderlich. Die Antwort mit den wenigsten Bytes gewinnt.
Schließt am Donnerstag, 6.30 Uhr UTC oder so.
Das Original wurde mir von meinem Freund gezeigt, der dies mit Java getan hat. Er weigerte sich, mir den Quellcode zu zeigen, und jetzt werde ich ihn möglicherweise mit der Brillanz anderer Sprachen blenden. : D
Sie können keine alternativen Zeichen verwenden (macht es einfacher?).
Aktuelle Rangliste
- Pyth - 28 Bytes - isaacg
- CJam - 30 Bytes - Runer112
- CJam - 32 Bytes - Martin Büttner
Höchste Stimmen: C - 73 Bytes - Paul R
isaacg erhält die krone, um die treppenhaus-herausforderung mit pyth zu bestehen. Achten Sie auf weitere Herausforderungen wie diese bei PPCG!
quelle
Antworten:
Pyth,
2928Probieren Sie es hier aus.
Eine ziemlich einfache Lösung, mit dem Trick "Fünf Leerzeichen oder fünf Unterstriche anhängen" aus der Lösung von @ xnor, aber mit der Schleife von 0 bis 20, nicht 20 bis 0.
quelle
C
8680767573 Bytesquelle
for(i=25;i--;)
i=26
. Neben diesem, die' '
könnten geändert werden ,32
für einen zusätzlichen Charakter. Meine Lösung ist nach diesen Optimierungen 2 Zeichen länger :(main(i){for(i=21;i--;)printf("%*s%c\n",i/5*6+5,i%5?"":"_____",i<20?'|':0);}
1. Vereinfachen Sie die Formel für die Länge' '
. Auch läuft es gut für mich mit""
anstelle von" "
'|'
Drucken zu sparen ?c;main(i){for(i=21;i--;c='|')printf("%*s%c\n",i/5*6+5,i%5?"":"_____",c);}
Java,
198158156146 BytesDies kann wahrscheinlich viel verkürzt werden. Vorschläge sind wie immer willkommen.
Eingerückt (irgendwie):
Vielen Dank an Martin Büttner, Rainbolt und Geobits.
quelle
Brainfuck (1065 Bytes)
Es ist nicht schön, es ist nicht kurz ... aber ich werde später optimieren!
quelle
CJam,
3630 BytesProbieren Sie es online aus.
Meine anfängliche 36-Byte-Lösung erzeugte das Ergebnis in der Ausgabeorientierung. Trotz meiner Versuche, mehr Bytes aus dem Algorithmus herauszuholen, konnte ich nicht. Dann sah ich Martins brillante Strategie, Spalten statt Zeilen zu generieren und das Ergebnis zu transponieren. Ich erkannte, dass dies wahrscheinlich ein besserer Ansatz war, und machte mich auf den Weg, um eine transpositionsbasierte Lösung zu finden.
Mein Ansatz zur Umsetzung dieser Strategie ist jedoch sehr unterschiedlich. Anstatt vollständige Spalten zu generieren, verwende ich eine iterative Lösung, die alle bereits generierten "Schritte" einrückt und bei jeder Iteration einen neuen Schritt hinzufügt. Die erste Iteration der Hauptschleife generiert also Folgendes:
Die zweite Iteration der Hauptschleife rückt den vorhandenen Schritt ein und fügt einen neuen hinzu:
Und die vollen fünf Iterationen der Hauptschleife erzeugen dies:
Danach muss nur noch die erste Zeile entfernt werden, die andernfalls zum unerwünschten Riser für die unterste Stufe werden würde, und transponiert werden.
quelle
Python 2,
807774 BytesHab das Doppel los
exec
und passe alles in das eineprint
!quelle
Clip, 46
Erläuterung
quelle
CJam,
3632 BytesTeste es hier.
Ich habe auch versucht, eine explizite Formel zu verwenden, aber diese ist in CJam länger ... Vielleicht hilft sie jemand anderem:
Erläuterung
Ich habe festgestellt, dass die Treppe viel einfacher gebaut werden kann, wenn Sie a) das Raster vertauschen und b) die Linien umkehren:
Also erst baue ich das, dann umkehren, dann transponieren.
quelle
Python 2, 59
Die 21 Zeilen sind mit
n
in indiziert[20,19,...,1,0]
. Zuerst werden 6 Leerzeichen für jeden "Schritt" ausgegeben (minus 1), berechnet alsn/5*6
. Anschließend werden fünf Leerzeichen gedruckt, mit der Ausnahme, dass dies stattdessen Unterstriche für Vielfache von fünf sind. Zum Schluss wird eine vertikale Linie mit Ausnahme der obersten Linie gedrucktn=20
.quelle
JavaScript,
1151079694898783 BytesDas ist zu lang, um zu gewinnen, aber es ist das erste Mal, dass ich auf PCG.SE eine Antwort finde, und ich bin irgendwie stolz darauf, etwas Postfähiges gemacht zu haben.
Mit hilfreichen syntaktischen Ratschlägen habe ich den Code erheblich verkürzt - sogar unterhalb der Bildlaufleistenschwelle!
quelle
alert
. Wenn Sie es in der Konsole ausführen, funktioniert es auch ohne. Das Semikolon in der letzten geschweiften Klammer ist ebenfalls nicht erforderlich. Sie können 1 Byte speichern, indem Sie(y/5-.2)
anstelle von((y-1)/5)
s+='\n'
nachher bewegeny--
und die geschweiften Klammern loswerden, so dass es aussiehtfor(s='',y=21;y>0;y--,s+='\n')
. Ich habe auch das s in der for-Schleife initialisiert, damit Ihr Code eine einzige Anweisung istfor(s='',y=22;--y;s+='\n')for(x=0;++x<29;)s+=6*~~(y/5-.2)+5-x?5*~~(x/6)+1-y?' ':'_':'|'
wenn du deinen ternären Ausdruck umlegst, den du testen kannst und fürnumber - x
den 0 ist, wenn beide Ausdrücke gleich sind. Das erspart dir 2 weitere Bytes.for(s='',y=22;--y;s+='\n')for(x=0;++x<29;)s+=6*~(~-y/5)-~x?4+5*~(x/6)+y?' ':'_':'|'
ist 83ECMAScript 6,
14213812991 BytesBesonderer Dank geht an @ edc65 für die Überarbeitung.
Code-Snippet anzeigen
Die Logik der Originalversion überprüft den @ edc65-Kommentar auf seine Verwandlung.
quelle
new
Konstruktor sicher entfernen, bevor SieArray
ein paar Bytes sparen.new
notwendig war.repeat
[1,2,3,4].map((a,b)
und mit nur b =>[0,1,2,3].map(b
(-4)MATLAB, 68 Bytes
Ich habe das starke Gefühl, dass MATLAB es besser machen sollte, aber mir fällt kein Weg ein.
Erstellt die Treppe kopfüber und dreht sie um. Mein Thaumometer ist wegen all der magischen Konstanten kaputt gegangen.
'|'
wird absichtlich unverändert gelassen (anstelle des ASCII-Codepunkts), um es zu initialisierenp
undw
als Zeichen-Array.quelle
'|' = 124
Trotzdem, das kostet keine zusätzlichen Zeichen.Rubin, 48
Alter Ansatz, 68
quelle
'_'
können als geschrieben werden?_
. 3. Zeilenumbrüche können direkt in Zeichenfolgen eingebettet werden (so können Sie dies tatsächlich tun"<linebreakhere>|"
). 4. Die Klammern sind nicht erforderlich. Das Finaleputs
kann durch ersetzt werden$><<
(wodurch Sie den Platz auch nach der Verwendung verlieren können?_
). Mach weiter! :)(1..4).map
durch4.times
und verwenden Sie dann4-i
statt5-i
.Julia, 83 Bytes
In Julia wird die Verkettung von Zeichenfolgen mithilfe des
*
Operators und die Wiederholung von Zeichenfolgen mithilfe von ausgeführt^
.quelle
> <> ,
108104100 BytesEine einfache> <> Lösung, die dieselbe Strategie wie meine Python-Antwort verwendet . Der Hauptunterschied besteht darin, dass> <> keine String-Multiplikation (oder gar Strings) hat. All dies geschieht also mit Schleifen.
Erläuterung
quelle
Groovy,
9871 BytesIch bin mir ziemlich sicher, dass es irgendwie reduziert werden kann :) verkürzt durch @Score_Under
quelle
' '*(i-(i-1)%5)
Entfernen Sie Klammern aus der ganzen('_____'+(i==25?'':'|'))
, ersetzen die'_____'
mit'_'*5
, und wenn Sie die letzte Bedingung Flip können Sie% als unorthodox Ungleichheitsoperator verwenden:(i%25?'|':'')
. Dies sollte Sie auf 71 bringen.Perl, 50
Versuch es mit mir .
quelle
T-SQL, 276 Bytes
quelle
Visual FoxPro 9.0, 261 Byte
n = Anzahl der Schritte
Insgesamt 175 Zeichen, musste aber in eine Datei ausgegeben werden, um korrekt angezeigt zu werden - also minus 43 Zeichen für Dateioperationen = 132 Zeichen.
Hinweis für den Antwortenden: Die Byteanzahl gilt für den absolut funktionierenden Quellcode, und der Byteanzahler gibt an, dass es sich um 261 Bytes handelt.
quelle
Bash (+ Tac von Coreutils): 110 Bytes
Dies kann direkt in das Terminal eingefügt werden.
quelle
|tac
geht es nicht ganz. Und ich habe das auf Git Bash gemacht, also sollte ich mich umbringen.x86-Maschinencode, 48 Byte
Assemblercode-Äquivalent:
Ausgabe:
Tut mir leid, dass die Ausgabe anders ist. Ich hoffe es ist akzeptabel.
Dies wurde in DOSBOX ausgeführt
quelle