Bald hat mein Freund Geburtstag und da er Programmierer und ASCII-Kunstliebhaber ist, dachte ich, ich würde ihm ASCII-Kuchen machen!
Leider vergesse ich immer wieder sein aktuelles Alter, daher hätte ich gerne ein Programm für meinen ASCII-Ofen, das einen Kuchen mit einer bestimmten Anzahl von Kerzen backt, damit ich es nicht noch einmal selbst machen muss, wenn ich mich mit seinem irre Alter.
Da ASCII-Öfen nur über begrenzten Speicher und Speicherkapazität verfügen, sollten möglichst wenige Bytes verwendet werden .
Deine Aufgabe:
Schreiben Sie ein Programm, das eine Geburtstagstorte mit so vielen Kerzen an die Konsole ausgibt, wie die Eingabe angibt.
Kuchenanforderungen sind:
- Es muss einen Rand haben, der aus horizontalen
-
und vertikalen|
Linien und Eckpunkten besteht+
. - Mindestens 5 Zeichen breit (einschließlich Kuchenrand
|
) - Mindestens 5 Zeichen hoch (einschließlich Tortenrand
-
) Zwischen dem Rand des Kuchens und dem ersten Kerzenboden (nicht der Flamme) muss auf jeder Seite ein Leerzeichen stehen , es sei denn, in diesem Bereich befindet sich eine Flamme. Eine Flamme oder ein Kerzenboden sollte nicht in der Lage sein, die Kuchenränder zu überlappen.
- Die maximale Breite des Kuchens beträgt 9 Zeichen, daher sind maximal 5 Kerzen pro Reihe zulässig.
- Da wir nicht möchten, dass unser Kuchen zweidimensional ist, muss er zusätzliche 2 Reihen hoch sein, um ihm etwas Volumen zu verleihen. Fügen Sie am unteren Rand einen weiteren Rand hinzu und verbinden Sie die Scheitelpunkte mit den darüber liegenden, wobei Sie ebenfalls die ASCII-Zeichen von oben (
-
,|
und+
) verwenden.
Kerzenanforderungen sind:
- Besteht aus der Basis
|
und der Flamme*
, wobei die Flamme oben auf der Basis gestapelt ist. - Kerzen dürfen nicht direkt nebeneinander stehen, außer diagonal.
- Die Kerzen werden von links nach rechts und dann von oben nach unten mit maximal 5 in einer Zeile platziert.
(Hinweis: Wenn sich in der vorherigen Reihe 5 Kerzen befänden, kann die nächste Reihe möglicherweise nicht auch 5 Kerzen enthalten, da diese dann benachbart wären.)
Zusätzliche Bemerkungen:
- Die Kuchenbreite hängt von der Anzahl der Kerzen in der ersten Reihe ab, muss jedoch mindestens 5 Zeichen und höchstens 9 Zeichen breit sein.
- Die Kerzen werden beginnend in der obersten Reihe von links nach rechts gefüllt. Sobald eine Reihe voll ist, sollte die nächste in der Reihe unter der ersten beginnen.
Eingang:
Sie können eine Nummer in einem (angemessenen) Format akzeptieren, das Sie möchten.
Bei dieser Herausforderung können Sie davon ausgehen, dass die Zahl zwischen 0 und 2 31 (ohne 0) liegt, obwohl ich jemanden, der so alt ist, nicht anerkenne.
Ausgabe:
Sie können entweder eine Zeichenfolge zurückgeben oder den resultierenden Kuchen direkt in die Ausgabekonsole schreiben.
Regeln:
- Standard Lücken sind verboten.
- Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes in jeder Sprache.
Beispiele:
Eingang: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Eingang: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
Eingang: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Viel Glück!
Antworten:
Charcoal ,
767170 6646 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten: 1 Byte dank @ASCII_Only gespeichert. Durch das Auffinden einer sauberen Art, die Kerzen zu zeichnen, konnten 20 Bytes eingespart werden. Erläuterung:
Berechnen Sie die Größe sowohl des gesamten Kuchens einschließlich des zusätzlichen Volumens als auch der Oberseite des Kuchens, damit sie gezeichnet werden können. ((
=
= ASCII 61) = (+
= ASCII 43) + 9 * 2 für die zusätzliche Lautstärke.)Bewegen Sie den Cursor auf die erste Reihe von 5 Kerzen. Schleife durch jede Kerze.
Drucken Sie eine Kerze und bewegen Sie zwei Zeichen nach rechts für die nächste Kerze.
Nach der (mit Nullen versehenen) 4., 8., 13., 17., 22. usw. Kerze (die sich am Ende einer Reihe befindet)
Bewegen Sie den Cursor zur ersten Kerze in der nächsten Zeile. Dies funktioniert sowohl für gerade als auch für ungerade Zeilen!
quelle
A
am Anfang brauchen : P (übrigens danke für das Finden eines anderen Golfers (nicht so-) Rand Fall)Jelly , 67 Bytes
Eine monadische Verknüpfung, die eine Zahl aufnimmt und eine Liste von Zeichen zurückgibt, oder ein vollständiges Programm, das die Ausgabe druckt.
Probieren Sie es online!
Wie?
quelle
Japt , 94 Bytes
Probieren Sie es online!
quelle