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 de arte ascii . ¿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 3
a 6
. Este es el tamaño de mi pizza. Por ejemplo, una 6
pizza 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 code-golf, 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)
̶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 2xP
.Respuestas:
Pipa ,
878175 bytes74 bytes de código, +1 para
-l
bandera.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
b
los ingredientes, rellenándolo con espacios a la longitud(a+1)*(a-2)
(dondea
está el tamaño) y agrupándolo en una lista de filas.Finalmente, imprimimos la fila superior con un espacio inicial; concatenar el medio entre
y
la izquierda yRVy
la derecha, e imprimir eso; e imprima la fila inferior con un espacio inicial.fuente
Python 2 ,
202,198,190,177,162,157,146 bytesPruébalo en línea!
fuente
'\\'
,'|
' y'/
de las variables al golf fuera de unos pocos bytes? Así es como me afeité mucho de mi respuesta JS.(n-1)
con(--n)
, eln>4
s conn>3
,(n+1)
con(n+2)
y el final(n-1)
conn
para eliminar 4 bytes?--
operador!Python 3 ,
224213195 bytesPruébalo en línea!
fuente
Javascript (ES6),
170161 bytesComienza 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.
fuente
JS (ES6),
257255249248246244 bytesLlámalo como
m(4)("PS")
por 1 pepperoni y 1 salchicha. Probablemente se pueda jugar más al golf.fuente
Carbón , 37 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicació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.
Complete la mitad izquierda de la pizza por reflexión con posible superposición.
Complete la pizza por reflexión con superposición variable.
Ingrese los ingredientes y divídalos en pedazos para que quepan en la pizza.
fuente