Weil es Samstag (UTC) ist und ich Hunger habe, hätte ich gerne ein Stück Pizza. Ich gebe dir eine Bestellung und möchte eine schöne heiße ASCII- Pizza. Der Herausforderung gewachsen?
Die Drive-Thru
Ich werde meine Bestellung überall dort aufgeben, wo sich Ihr Laufwerk befindet, ob es sich um STDIN, einen Funktionsparameter oder ein Befehlszeilenargument handelt, aber ich werde es nicht in eine Variable für Sie einfügen. (JS-Funktionsausdrücke müssen einer Variablen zugewiesen werden.)
Die Bestellung
Meine Bestellung wird 2 Teile haben. Die erste ist eine positive Ganzzahl ungleich Null von 3
bis 6
. Das ist die Größe meiner Pizza. Zum Beispiel würde eine Größe 6
Pizza ohne Belag wie folgt aussehen:
/=====\
/ \
| |
| |
\ /
\=====/
Eine Größe 5
:
/====\
/ \
| |
\ /
\====/
Eine Größe 4
:
/===\
| |
| |
\===/
Eine Größe 3
/==\
| |
\==/
Die Beläge
Meine Beläge werden eine Folge von Großbuchstaben sein. Hier sind die möglichen Werte:
P - Peperoni S - Wurst N - piNeapple J - Jalapenos B - Bananenpaprika C - baCon
Sie müssen irgendwo auf die Pizza passen. Wenn ich Größe 4 und bestelle PSPCJ
, ist dies eine gültige Ausgabe:
/===\
|PSPCJ|
| |
\===/
Also das ist:
/===\
|P P J|
| S C |
\===/
Und das:
/===\
| |
|PSPCJ|
\===/
Ich bin nicht sehr wählerisch, wo sich meine Beläge auf der Pizza befinden, solange sie nicht auf der Kruste oder übereinander liegen.
Das Abholfenster
Ich werde an viele Orte gehen, um meine Pizza abzuholen, einschließlich STDOUT, eine Datei, den Rückgabewert einer Funktion, aber keine Variable.
Zusätzliches Zeug
- Standardlücken verboten
- Dies ist mit Code-Golf gekennzeichnet, so dass die kürzeste Antwort in Bytes gewinnt!
- Mach dir keine Sorgen über ungültige Eingaben (Beläge> Pizzaraum usw.)
- Siehe meine Antwort (JS ES6) unten für ein Beispiel (ich hoffe, Sie können es besser machen)
̶5̶,̶ ̶N̶N̶N̶
̶ ist auch ein gültiger Eingang ̶ (oder sollte es ̶̶5̶,̶ ̶N̶
̶ anstelle) ̶ ̶ Auch dort, wo die Pilze ..? :( BEARBEITEN: Vergiss die erste Frage, ich sehe deine Testfälle hat 2xP
.Antworten:
Pip ,
878175 Bytes74 Byte Code, +1 für
-l
Flag.Übernimmt Eingaben als Befehlszeilenargumente. Probieren Sie es online!
Ansatz
e
ist die oberste Reihe, wie z/=====\
. Wenn Sie es umkehren, ist es auch die unterste Reihe.y
ist der linke Rand, wie z["/" "|" "|" "\"]
. Wenn Sie es umkehren, ist es auch der rechte Rand.Wir konstruieren dann die Mitte, indem wir
b
die Beläge nehmen und sie mit Leerzeichen auf Länge auffüllen(a+1)*(a-2)
(woa
ist die Größe) und sie in eine Liste von Zeilen gruppieren.Schließlich drucken wir die oberste Zeile mit einem führenden Leerzeichen. verketten Sie die Mitte zwischen
y
links undRVy
rechts und drucken Sie diese aus; und drucken Sie die unterste Zeile mit einem führenden Leerzeichen.quelle
Python 2 ,
202, 198, 190, 177, 162, 157,146 BytesProbieren Sie es online!
quelle
'\\'
,'|
‘und'/
den Variablen zum Golf aus wenigen Bytes? Auf diese Weise habe ich meine JS-Antwort stark reduziert.(n-1)
mit(--n)
, dasn>4
s mitn>3
,(n+1)
mit(n+2)
und das letzte(n-1)
mit ersetzenn
, um 4 Bytes zu sparen?--
Operator nicht!Python 3 ,
224213195 BytesProbieren Sie es online!
quelle
JavaScript (ES6),
170 bis161 ByteBeginnt damit, eine falsch geformte Pizza der Breite 2 und Höhe 5 zu nehmen, sie horizontal zu strecken und vertikal anzupassen, und ersetzt das Innere durch Beläge oder Leerzeichen, sobald sie ausgehen.
quelle
JS (ES6),
257255249248246244 BytesNennen Sie es wie
m(4)("PS")
für 1 Peperoni und 1 Wurst. Wahrscheinlich kann mehr golfen werden.quelle
Kohle , 37 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Geben Sie die Größe der Pizza ein.
Beginnen Sie, die Oberseite der Pizza zu drucken.
Wenn die Pizza eine der größeren Größen ist, fügen Sie zusätzliche oben und seitlich hinzu.
Drucken Sie mehr von der Seite der Pizza.
Vervollständige die linke Hälfte der Pizza durch Reflektion mit möglicher Überlappung.
Ergänzen Sie die Pizza durch Spiegelung mit variabler Überlappung.
Geben Sie die Beläge ein und teilen Sie sie in Stücke, damit sie in die Pizza passen.
quelle