Das ist ein Kuchen:
_========_
| |
+________+
| |
+________+
| |
+________+
Es ist 8 breit, 3 hoch und 1 tief.
Sie müssen ein Programm schreiben, das aus 3 Eingaben einen Kuchen macht. Die erste Eingabe steuert, wie viele Unterstriche sich in der Mitte und =
oben befinden. Hier ist der erste Kuchen mit einer Breite von 10 statt 8:
_==========_
| |
+__________+
| |
+__________+
| |
+__________+
Die zweite Eingabe steuert, wie groß der Kuchen ist. Hier ist der zweite Kuchen mit einer Höhe von 4 statt 3:
_==========_
| |
+__________+
| |
+__________+
| |
+__________+
| |
+__________+
Beachten Sie die Wiederholung der Ebenen.
Die dritte Eingabe steuert, wie tief es ist. Das ist, wie viele | |
s auf der Oberseite enthalten sein sollen. Hier ist der dritte Kuchen mit einer Tiefe von 2 statt 1:
_==========_
| |
| |
+__________+
| |
+__________+
| |
+__________+
| |
+__________+
Sie können nachfolgende Leerzeichen drucken. Testfälle:
Input: 3
, 3
,3
Ausgabe:
_===_
| |
| |
| |
+___+
| |
+___+
| |
+___+
(Ich hoffe, ich bekomme diesen Kuchen nie)
Input: 3
, 2
,1
Ausgabe:
_===_
| |
+___+
| |
+___+
Input: 5
, 5
,5
Ausgabe:
_=====_
| |
| |
| |
| |
| |
+_____+
| |
+_____+
| |
+_____+
| |
+_____+
| |
+_____+
Antworten:
V ,
25, 20 BytesProbieren Sie es online!
Hexdump:
Vielen Dank an @ nmjmcman101 für das Speichern von drei Bytes und das Erinnern an einen alten Operator, der zwei weitere Bytes gespeichert hat.
Erläuterung:
a
,b
undc
sind die drei Argumente.quelle
Ò r|$.
mitÒ|è
einigem Bytes. Probieren Sie es online!è
es das überhaupt gibt. Ich musste mir den Kopf zerbrechen, um mich daran zu erinnern, was es tut. Aber das ist wirklich schlau! Tatsächlich kann die Verwendung der GroßbuchstabenvarianteÈ<char>
wahrscheinlich auch an einigen anderen Stellen mehr Bytes einsparen. Danke, dass du mich erinnert hast! :)Kohle ,
3426 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Übernimmt Parameter in der Reihenfolge Breite, Tiefe, Höhe. Erläuterung:
quelle
Mathematica, 167 Bytes
quelle
PHP> = 7.1, 104 Bytes
Online Version
quelle
for([,$w,$h,$t]=$argv;$i<2*$h+$t;)echo str_pad($e="_|+"[$b=$i++<$t?$i>1:2-($i-$t&1)],$w+1,"= _"[$b])."$e\n";
$b=$i++<$t?$i>1:1+$_++%2
.Ruby , 62 Bytes
Probieren Sie es online!
quelle
Japt ,
5147 BytesProbieren Sie es online!
Die Eingabe erfolgt in der Reihenfolge Breite, Höhe, Tiefe.
quelle
Gelee ,
3029 Bytes-1-Byte-Umschaltung von einer Addition zu einem XOR, um zwischen äußeren und inneren Spalten zu übersetzen. Dies ermöglicht eine Suche nach 5 Zeichen anstelle von zwei
_
Einträgen.Das vollständige Programm unter drei Programmargumente
depth
,height
,width
und Drucken des Kuchens.Probieren Sie es online!
Wie?
quelle
Gleichstrom , 108 Bytes
Probieren Sie es online!
quelle
Röda , 65 Bytes
Probieren Sie es online!
quelle
Java 7 ,
169164158 BytesProbieren Sie es online!
Ungolfed:
quelle
u=t+u+"+\n" inside the for-loop:
für (u = t + u + "+ \ n; a [2] -> 1;) s + = t;`. Aber nette Antwort, +1 von mir.05AB1E ,
3331 BytesProbieren Sie es online!
Erläuterung
quelle
Windows Batch,
211 180163 BytesInsgesamt 48 Bytes dank @Neil!
quelle
@
in jeder Zeile und danachdo
etwas kürzer als@echo off
. 2.@call set w=%%w%%_
vermeidetsetlocal enabledelayedexpansion
. 3. Verwenden Sie@for /l %%p in (2,1,%2)
. 4. IMHO sollten Sie hinzufügen,@set w=
damit der Code mehr als einmal funktioniert.@set w=
, funktioniert der Code dann nicht mehrmals?@for /l %%p in (1,1,%1)do
scheint verschwunden zu sein. 2. Dein Kuchen scheint die falsche Höhe zu haben, zumindest scheint er nicht mit dem Testfall übereinzustimmen, wenn ich es versuche. 3. Wenn Sie das Skript zweimal in derselben Befehlssitzung ausführen, wird der Kuchen immer breiter.@
nach dem&
. 2 Wenn Sie die zweite Schleife in(2,1,%3)
und die dritte Schleife in ändern(1,1,%2)
, können Sie dieecho +%w%+
Zeile meines Erachtens löschen . 3. Wenn ich richtig gezählt habe, sollten Siew
Leerzeichen anstelle von_
s eingeben, da dies zu weniger Substitutionen führt. (Ich würde verwenden,@call set w= %%w%%
da sonst der Raum schwer zu erkennen ist!)Haskell , 87 Bytes
quelle
(w#t)d= ...
speichert ein Byte.SOGL V0.12 , 25 Bytes
Probieren Sie es hier aus!
Erwartet die Eingabe als Breite, Tiefe und dann als Höhe.
quelle
Python 2,
12412212010592 Bytes-15 Bytes mit STDIN anstelle von Programmargumenten
-13 Bytes durch Umschalten auf Python 2 (für
input()
Ganzzahlen undprint
Anweisungen)-12 Bytes von Caird Coinheringaahing
Probieren Sie es online!
Python 3,
124122120105 BytesProbieren Sie es online!
Wenn kein vollständiges Programm erforderlich ist:
Python 3,
8784 BytesProbieren Sie es online!
quelle
Javascript (ES6),
161157 Bytesquelle
Python 2 , 93 Bytes
Probieren Sie es online!
quelle
Perl 5 , 85 + 1 (-a) = 86 Bytes
Probieren Sie es online!
quelle
JavaScript / ES6, 90 Byte
Ich habe gerade eine grobe Lösung geschrieben und die vorhandene JS-Antwort um satte 56 Bytes übertroffen. Dann habe ich 11 Bytes abgespielt.
Hier ist eine Demo.
quelle
Canvas , 23 Byte
Probieren Sie es hier aus!
quelle