Der 5. April ist der National Deep DIsh Pizza Day, das Thema dieser Herausforderung. Erstellen Sie bei einer positiven Ganzzahl n
( n
größer als 0) eine ASCII-Deep-Dish-Pizza. Tatsächliche Deep Dish Pizza gezeigt:
Wie Sie sehen können, befindet sich eine Krustenschicht auf dem Boden und umgibt den Rest der Pizza.
Wie man die Pizza macht
Die Kruste besteht aus zwei Schichten. Die erste Schicht wird n
groß und n*3
lang sein. Die Länge ist die Anzahl der Zeichen (einschließlich Leerzeichen) in der höchsten Zeile. Wenn n
also 1 angegeben ist, würde die erste Schicht folgendermaßen aussehen:
\_/ 1 character tall
3 characters long
Wenn n
zwei sind:
\ / 2 characters tall
\__/
6 characters long
Nun zur zweiten Schicht der Kruste. Es wird außerhalb der ersten inneren Kruste gehen, daher wird es n+2
Zeichen groß und (n*3)+6)
Zeichen lang sein. Gegeben n
ist eins:
\ / 3 characters tall
\ /
\___/
9 characters long (3 underscores, 3 slashes on either side)
Wenn n
zwei sind:
\ / 4 characters high
\ /
\ /
\____/
12 characters long
Sie würden dann die beiden höchsten Paare \/
für die innere und äußere Kruste miteinander abgleichen. In n
ist 1:
\ \ / /
\ \_/ /
\___/
Wenn es richtig gemacht wird, sieht es aus wie ein V ohne die Oberseiten mit einem Unterschied von einem Zeichen zwischen den einzelnen Ebenen. Apropos Spitzen: Die Kruste wird durch ein Paar zusammengefügt /\
, die durch eine Reihe von Unterstrichen getrennt sind (n*3)+2
, um die Kruste und die Pizza zu vervollständigen.
Beispiele
Wenn n
ist 1:
/\_____/\
\ \ / /
\ \_/ /
\___/
n
ist 2:
/\________/\
\ \ / /
\ \ / /
\ \__/ /
\____/
n
ist 3:
/\___________/\
\ \ / /
\ \ / /
\ \ / /
\ \___/ /
\_____/
Gewinnkriterium
Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
-
anstelle von a verwenden_
?Antworten:
Holzkohle , 35 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Erläuterung:
Geben Sie die Größe der Pizza ein.
Drucken Sie einen Teil der äußeren Krustenbasis.
Drucken Sie die äußere Kruste links.
Drucken Sie einen Teil der oberen Kruste.
Drucken Sie die innere Kruste links.
Drucken Sie einen Teil der inneren Krustenbasis.
Überlegen Sie, um die Pizza zu vervollständigen.
Beachten Sie, dass moderne Ergänzungen zu Charcoal die Größe auf 31 Byte reduzieren:
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes.
quelle
JavaScript (ES6), 136 Byte
Die gesamte Pizza wiederholt sich sehr oft, sodass die
r
Funktion (als markiertes Vorlagenliteral konzipiert) das erste Zeichen ihrer Eingabezeiten wiederholtn
. Dies behandelt die oberen und unteren beiden Zeilen der Pizza. Die Mitte wird wiederholt, indem eine Reihe von Leerzeichen ersetzt wird. Die$`
und$'
Unterteilungen entsprechen automatisch einer zunehmenden und abnehmenden Anzahl von Leerzeichen, wodurch die\ \
und/ /
entsprechend positioniert werden.quelle
Python 2,
153151 BytesProbieren Sie es online aus
-2 Bytes durch Ersetzen wiederholter Werte durch Variablen dank @KoishoreRoy
quelle
print' '*=~n+'\\'+'_'*-~n+'_/'
kannst du nicht schreibenprint' '*i+' \\_'+'_'*n+'_/'
? (Odern
stattdesseni
, aber ich habe die vorherige Zeile kopiert.)-~n
umi
an dieser Stelle , weili==n
. Aber die zweite Änderung ist gut. Auch ich habe-~n
dank Ihrer Idee-~n
umi
, weil ich den Raum wurde hinzugefügt. (Aber Sie scheinen das trotzdem selbst herausgefunden zu haben. Auch das habe ich bereits bemerktn
und bini
an diesem Punkt gleich.)MATLAB, 333 Bytes
(Fauler Versuch)
Formatiert:
Die Grundidee ist, dass ich Funktionsgriffe habe, um alles zu drucken, und es dann ziemlich brutal erzwinge. Die for-Schleife gilt für die
n
Ebenen zwischen der obersten und der untersten Ebene der inneren Ebene. Die Wiederholung von(Leerzeichen) und
_
erfolgtarrayfun
mit Array-Eingaben. Ich werde versuchen, mir interessantere Möglichkeiten dafür auszudenken, wenn ich später mehr Zeit habe.quelle
Holzkohle ,
5452 BytesErläuterung:
Meine vorherige Antwort war in Retina, einer Sprache, auf die ich noch keine Antwort gepostet habe. Jetzt haben Sie eine Antwort in Charcoal, auf die ich noch keine Antwort gepostet habe.
Probieren Sie es online aus!
quelle
PHP,
209 200 137135 Bytesendlich JS schlagen :)
Nimmt Eingaben von STDIN entgegen; Laufen Sie mit
-nR
oder bestellen Sie eine Familienpizza .Nervenzusammenbruch
quelle
JavaScript (ES6), 205 Byte
Dies ist mein erster ASCII-Kunst- Beitrag!
Fügen Sie
f=
am Anfang ein hinzu und rufen Sie like auff(arg)
.Hinweis: Alle Zeilenumbrüche sind notwendig!
Erläuterung
Der Code deklariert zuerst ein Array
a
. Es deklariertw
undu
hat dann den Wert von Leerzeichen bzw. Unterstrich. Dann deklariert es eine String-Variable, die den Wert der Kruste enthält (der von berechnet werden kann/\+(n*3+2 underscores)+/\
, wie in der Challenge erwähnt). Danach wird mit einerfor
Schleife und aTemplate Literal
die Mitte der Pizza erstellt (wobei jede Ebenei
Leerzeichen am Anfang und(n+1-i*2)+n+(n-1)
Leerzeichen zwischen\ \
und hat/ /
, wobeii
der Index derfor
Schleife steht). Zuletzt wird der unterste Teil der Pizza erstellt ((i whitespaces)+\+(n+2 underscores)+/
). Alle Teile werden zusammengefügt und ausgegeben (ted).Wenn das Snippet aus irgendeinem Grund die ASCII-Grafik nicht korrekt anzeigt, schauen Sie hier .
Wir wünschen allen einen schönen Deep Dish Pizza Day!
quelle
Stapel, 200 Bytes
t
enthält den linken Einzug, während ers
das Innere enthält; Seine_
s werden durch Leerzeichen in den mittleren Zeilen ersetzt.l
existiert nur, um Wiederholungen zu vermeiden.quelle
V , 57 Bytes
Probieren Sie es online aus!
Da dies (wie üblich) viele böse Nicht-ASCII-Zeichen und nicht druckbare Zeichen enthält, ist hier ein Hexdump:
Ich werde bald eine detailliertere Erklärung veröffentlichen, aber hier ist eine allgemeine Übersicht:
quelle
C (Klirren) ,
211215 BytesProbieren Sie es online aus!
Hübscher Code:
Bearbeitungen:
quelle
CJam, 74 Bytes
Viel zu lange. Ich werde einen anderen Ansatz versuchen.
Erstellt die Zeichenfolge zeilenweise. Nichts zu verrückt.
quelle
CJam, 89 Bytes
Nun, das ist im Moment tatsächlich länger als meine andere Lösung, aber ich denke, es ist golffähiger:
Stapelspur:
quelle