Hazme una pizza

17

Como es sábado (UTC) y tengo hambre, me gustaría una porción de pizza. Te daré una orden y me gustaría una buena pizza caliente . ¿A la altura del desafío?

El Drive-Thru

Haré mi pedido donde sea que esté tu drive-thru, ya sea STDIN, un parámetro de función, un argumento de línea de comandos, pero no voy a ponerlo en una variable para ti. (Las expresiones de función JS deben asignarse a una variable).

El orden

Mi pedido tendrá 2 partes. El primero será un entero positivo, distinto de cero, de 3a 6. Este es el tamaño de mi pizza. Por ejemplo, una 6pizza de tamaño sin coberturas se vería así:

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

Un tamaño 5:

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

Un tamaño 4:

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

Un tamaño 3

 /==\
|    |
 \==/

Los ingredientes

Mis ingredientes serán una cadena de letras MAYÚSCULAS. Aquí están los valores posibles:

P - Pepperoni
S - Salchicha
N - piNeapple
J - Jalapeños
B - Pimientos de plátano
C - baCon

Debes colocarlos en la pizza en alguna parte. Si ordeno un tamaño 4 y PSPCJ, entonces esta es una salida válida:

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

Asi es esto:

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

Y esto:

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

No soy muy exigente con respecto a dónde están mis ingredientes en la pizza, siempre que no estén en la corteza o uno encima del otro.

La ventana de recogida

Iré a muchos lugares para recoger mi pizza, incluido STDOUT, un archivo, el valor de retorno de una función, pero no una variable.

Cosas extra

  • Lagunas estándar prohibidas
  • ¡Esto está etiquetado como por lo que gana la respuesta más corta en bytes!
  • No se preocupe por la entrada no válida (ingredientes> espacio para pizza, etc.)
  • Vea mi respuesta (JS ES6) a continuación para ver un ejemplo (espero que pueda hacerlo mejor)
programador 5000
fuente
3
Umm, ¿entonces también puedes recoger tu pizza en un Drive-thru?
Matthew Roh
1
¿Eres quisquilloso con respecto a mí llenando las esquinas superior derecha e inferior derecha de la caja de pizza con espacios en blanco? ;)
DLosc
1
@DLosc no, cualquier espacio en blanco al final de cualquier línea (incluida una nueva línea al final de la salida) es opcional pero no obligatorio.
programador 5000
1
¿Puede la pizza tiene más de una para uno de los ingredientes ̶ así que si quieres piña:? ̶ ̶ ̶5̶,̶ ̶N̶N̶N̶̶ es también una válida de entrada ̶ (o debe ser ̶ ̶5̶,̶ ̶N̶̶ en su lugar) ̶ ̶ Además, ¿dónde están las setas ..? :( EDITAR: No importa la primera pregunta, veo que sus casos de prueba tienen 2x P.
Kevin Cruijssen
¿Puedo publicar un enlace de pedido ? xD
FantaC

Respuestas:

1

Pipa , 87 81 75 bytes

74 bytes de código, +1 para -lbandera.

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

Toma datos como argumentos de línea de comandos. Pruébalo en línea!

Acercarse

e es la fila superior, como /=====\ . Si lo inviertes, también es la fila inferior.

y es el borde izquierdo, como ["/" "|" "|" "\"] . Si lo inviertes, también es el borde derecho.

Luego construimos el medio tomando blos ingredientes, rellenándolo con espacios a la longitud(a+1)*(a-2) (donde aestá el tamaño) y agrupándolo en una lista de filas.

Finalmente, imprimimos la fila superior con un espacio inicial; concatenar el medio entre yla izquierda y RVyla derecha, e imprimir eso; e imprima la fila inferior con un espacio inicial.

DLosc
fuente
¿Funciona esto con una pizza de queso (sin coberturas)?
programmer5000
@ programmer5000 Sí, en ese caso el segundo cmdline arg debería ser una cadena vacía (si lo está ejecutando desde una línea de comandos real, deberá citarlo).
DLosc
5

Python 2 , 202,198,190,177,162,157, 146 bytes

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]

Pruébalo en línea!

Keerthana Prabhakaran
fuente
Hey, usted puede asignar '\\', '|' y '/de las variables al golf fuera de unos pocos bytes? Así es como me afeité mucho de mi respuesta JS.
programmer5000
Solo estoy trabajando en eso !!!!
Keerthana Prabhakaran
1
Además, ¿puede reemplazar el primero (n-1)con (--n), el n>4s con n>3, (n+1)con (n+2)y el final (n-1)con npara eliminar 4 bytes?
programador
2
¡Python no es compatible con el --operador!
Keerthana Prabhakaran
136 bytes
FlipTack
2

Python 3 , 224 213 195 bytes

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)

Pruébalo en línea!

ovs
fuente
1

Javascript (ES6), 170 161 bytes

(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)

Comienza tomando una pizza deforme de ancho 2 y altura 5 y la estira horizontalmente y la ajusta verticalmente según corresponda, luego reemplaza el interior con coberturas o espacios una vez que se agotan.

Neil
fuente
0

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

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))

Llámalo como m(4)("PS")por 1 pepperoni y 1 salchicha. Probablemente se pueda jugar más al golf.

programador 5000
fuente
1
Dios, dale tiempo a otras personas para que respondan: P
Pavel
1
@ Григорий Перельман Solo quería dar un ejemplo, espero que esto no gane.
programmer5000
0

Carbón , 37 bytes

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

Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:

Nθ

Ingrese el tamaño de la pizza.

 /==

Comience a imprimir la parte superior de la pizza.

×=⸿/›θ⁴

Si la pizza es uno de los tamaños más grandes, agregue más en la parte superior y lateral.

⸿|

Imprime más del lado de la pizza.

‖BO↓﹪θ²

Complete la mitad izquierda de la pizza por reflexión con posible superposición.

‖BO⊕﹪θ²

Complete la pizza por reflexión con superposición variable.

J¹¦¹⪪S⊕θ

Ingrese los ingredientes y divídalos en pedazos para que quepan en la pizza.

Neil
fuente