Fammi una pizza


17

Perché è sabato (UTC) e ho fame, vorrei una fetta di pizza. Ti darò un ordine e vorrei una bella pizza calda . Fino alla sfida?

Il drive-thru

Inserirò il mio ordine ovunque sia il tuo drive-thru, che si tratti di STDIN, un parametro di funzione, un argomento della riga di comando, ma non lo inserirò in una variabile per te. (Le espressioni della funzione JS devono essere assegnate a una variabile.)

L'ordine

Il mio ordine avrà 2 parti. Il primo sarà un numero intero positivo diverso da zero da 3a 6. Questa è la dimensione della mia pizza. Ad esempio, una 6pizza di dimensioni senza condimenti sarebbe simile a:

 /=====\
/       \
|       |
|       |
\       /
 \=====/

Una taglia 5:

 /====\
/      \
|      |
\      /
 \====/

Una taglia 4:

 /===\
|     |
|     |
 \===/

Una taglia 3

 /==\
|    |
 \==/

I condimenti

I miei condimenti saranno una stringa di lettere MAIUSCOLE. Ecco i possibili valori:

P - Peperoni
S - Salsiccia
N - piNeapple
J - Jalapenos
B - Peperoni di banana
C - baCon

Devi inserirli sulla pizza da qualche parte. Se ordino una taglia 4 e PSPCJ, quindi questo è un output valido:

 /===\
|PSPCJ|
|     |
 \===/

Quindi è questo:

 /===\
|P P J|
| S C |
 \===/

E questo:

 /===\
|     |
|PSPCJ|
 \===/

Non sono davvero esigente su dove siano i miei condimenti sulla pizza, purché non siano sulla crosta o uno sopra l'altro.

La finestra di prelievo

Andrò in molti posti a ritirare la mia pizza, incluso STDOUT, un file, il valore di ritorno di una funzione, ma non una variabile.

Roba extra

  • Scappatoie standard vietate
  • Questo è contrassegnato come quindi vince la risposta più breve in byte!
  • Non preoccuparti di input non validi (condimenti> spazio per pizza, ecc.)
  • Vedi la mia risposta (JS ES6) di seguito per un esempio (spero che tu possa fare di meglio)

3
Umm, quindi puoi anche prendere la tua pizza su un Drive-thru?
Matthew Roh,

1
Sei esigente riguardo a me riempiendo gli spazi in alto a destra e in basso a destra della scatola della pizza di spazi bianchi? ;)
DLosc

1
@DLosc no, qualsiasi spazio bianco finale alla fine di qualsiasi riga (inclusa una riga finale finale alla fine dell'output) è facoltativo ma non necessario.
programmatore

1
La pizza può avere più di una per uno dei condimenti ̶ Quindi, se come ananas:? ̶ ̶ ̶5̶,̶ ̶N̶N̶N̶̶ è anche un valido ingresso ̶ (o dovrebbe essere ̶ ̶5̶,̶ ̶N̶̶ invece) ̶ ̶ Inoltre, dove sono i funghi ..?? :( MODIFICA: Non importa la prima domanda, vedo che i tuoi casi di test hanno 2 volte P.
Kevin Cruijssen,

Posso pubblicare un Orderup collegamento? xD
FantaC,

Risposte:


1

Pip , 87 81 75 byte

74 byte di codice, +1 per la -lbandiera.

e:'/.'=Xa-1.'\Y['/'\]Xa//5J'|X2-a%2^xPs.ePy.(b.sXa*a-a-2-#b<>a+1).RVys.RVe

Accetta input come argomenti della riga di comando. Provalo online!

Approccio

eè la riga superiore, ad esempio /=====\. Se lo inverti, è anche la riga inferiore.

yè il bordo sinistro, come ad esempio ["/" "|" "|" "\"]. Se lo inverti, è anche il bordo giusto.

Costruiamo quindi il centro prendendo b, i condimenti, riempiendoli di spazi in lunghezza (a+1)*(a-2)(dov'è ala dimensione) e raggruppandoli in un elenco di righe.

Infine, stampiamo la riga superiore con uno spazio iniziale; concatena il centro tra ya sinistra e RVya destra e stampalo; e stampare la riga inferiore con uno spazio iniziale.


Funziona con una pizza al formaggio (niente condimenti)?
programmatore

@ programmer5000 Sì - in tal caso il secondo arg cmdline dovrebbe essere una stringa vuota (se la stai eseguendo da una riga di comando effettiva, dovrai citarla).
DLosc

5

Python 2 , 202.198.190.177.162.157, 146 byte

n,t=input()
y=n+1
s=' '
l=' /'+'='*(n-1)+'\\ '+('','\n/'+s*y+'\\')[n>4]+'\n|'
print l+t[:y].center(y,s)+('','|\n|'+t[y:].center(y,s))[y%2]+l[::-1]

Provalo online!


Ehi, puoi assegnare '\\', '|' e '/alle variabili al golf fuori alcuni byte? È così che mi sono rasato molto dalla mia risposta JS.
programmatore

Ci sto solo lavorando !!!!
Keerthana Prabhakaran,

1
Inoltre, puoi sostituire il primo (n-1)con (--n), il n>4s con n>3, (n+1)con (n+2)e il finale (n-1)con nper radere 4 byte?
programmatore

2
python non supporta l' --operatore!
Keerthana Prabhakaran,


2

Python 3 , 224 213 195 byte

n,t=eval(input())
k=n+1
y=print
i=0
f,s,e,b,p="/ =\\|"
t+=s*99
y(s+f+e*~-n+b)
if n>4:y(f+t[:k]+b);i+=k
y(p+t[i:i+k]+p);i+=k
if~-n%2:y(p+t[i:i+k]+p);i+=k
if n>4:y(b+t[i:i+k]+f);i+=k
y(s+b+e*~-n+f)

Provalo online!


1

JavaScript (ES6), 170 161 byte

(n,t,a=[1,,n%2||2,,1])=>` /=\\
/___\\
|___|
\\___/
 \\=/`[r=`replace`](/.+/g,s=>s.repeat(a.pop()||n>4))[r](/=|_\b/g,`$&`.repeat(n-1))[r](/_/g,_=>t[i++]||` `,i=0)

Inizia prendendo una pizza deforme di larghezza 2 e altezza 5 e la allunga in orizzontale e la regola in verticale come appropriato, quindi sostituisce l'interno con condimenti o spazi una volta esauriti.


0

JS (ES6), 257 255 249 248 246 244 byte

m=s=>t=>(r="/",k="\\",p=" ",f="\n",x="|",c=f+x,q="",t=p+t,z=(s>2?p:q)+r+"=".repeat(s-1)+k+(s>4?f+r+p.repeat(++s)+k:q)+c+p.repeat(s)+x+(!s?c+p.repeat(s)+x:q)+p+(s>5?f+k+p.repeat(s)+r:q)+f+p+k+"=".repeat(s-2)+r,i=-1,z.replace(/ /g, x=>t[++i]||p))

Chiamalo come m(4)("PS")per 1 peperoni e 1 salsiccia. Probabilmente si può giocare a golf di più.


1
Accidenti, dai ad altre persone il tempo di rispondere: P
Pavel

1
@ Григорий Перельман Volevo solo fornire un esempio, spero che questo non vinca.
programmatore

0

Carbone , 37 byte

Nθ /==×=⸿/›θ⁴⸿|‖BO↓﹪θ²‖BO⊕﹪θ²J¹¦¹⪪S⊕θ

Provalo online! Il collegamento è alla versione dettagliata del codice. Spiegazione:

Nθ

Inserisci la dimensione della pizza.

 /==

Inizia a stampare la parte superiore della pizza.

×=⸿/›θ⁴

Se la pizza è una delle dimensioni più grandi, aggiungi extra alla parte superiore e laterale.

⸿|

Stampa più del lato della pizza.

‖BO↓﹪θ²

Completa la metà sinistra della pizza riflettendola con possibili sovrapposizioni.

‖BO⊕﹪θ²

Completa la pizza riflettendola con sovrapposizioni variabili.

J¹¦¹⪪S⊕θ

Inserire i condimenti e dividerli in pezzi in modo che si adattino all'interno della pizza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.