El 5 de abril es el Día Nacional de Pizza Deep DIsh, el tema de este desafío. Dado un número entero positivo n
( n
es mayor que 0), cree una pizza de plato hondo ASCII. Pizza de plato hondo real que se muestra:
Como puede ver, hay una capa de corteza en el fondo y que rodea el resto de la pizza.
Como hacer la pizza
La corteza está hecha de dos capas. La primera capa será n
alta y n*3
larga. La longitud es el número de caracteres (incluidos los espacios) en la línea más alta. Entonces dado n
es 1, la primera capa se vería así:
\_/ 1 character tall
3 characters long
Si n
son dos:
\ / 2 characters tall
\__/
6 characters long
Ahora para la segunda capa de la corteza. Saldrá fuera de la primera corteza interna, por lo tanto, serán n+2
caracteres altos y (n*3)+6)
caracteres largos. Dado n
es uno:
\ / 3 characters tall
\ /
\___/
9 characters long (3 underscores, 3 slashes on either side)
Si n
son dos:
\ / 4 characters high
\ /
\ /
\____/
12 characters long
Luego emparejarías los dos pares más altos \/
entre sí para la corteza interna y externa. En n
es 1:
\ \ / /
\ \_/ /
\___/
Si se hace correctamente, se vería como una V sin la parte superior con una diferencia de un carácter entre cada capa. Hablando de tapas, la corteza se unirá por un par de /\
, separadas por una línea de guiones bajos (n*3)+2
para completar la corteza y la pizza.
Ejemplos
Si n
es 1:
/\_____/\
\ \ / /
\ \_/ /
\___/
n
es 2:
/\________/\
\ \ / /
\ \ / /
\ \__/ /
\____/
n
es 3:
/\___________/\
\ \ / /
\ \ / /
\ \ / /
\ \___/ /
\_____/
Criterio ganador
Este es el código de golf , por lo que gana el código más corto en bytes.
-
lugar de un_
?Respuestas:
Carbón , 35 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.
Imprima parte de la base de la corteza exterior.
Imprima la corteza exterior del lado izquierdo.
Imprima parte de la corteza superior.
Imprima la corteza interna del lado izquierdo.
Imprima parte de la base interna de la corteza.
Reflexiona para completar la pizza.
Tenga en cuenta que las adiciones modernas al carbón reducen el tamaño a 31 bytes:
Pruébalo en línea! El enlace es a la versión detallada del código.
fuente
JavaScript (ES6), 136 bytes
Toda la pizza es muy repetitiva, por lo que la
r
función (diseñada como un literal de plantilla etiquetado) repite el primer carácter de susn
tiempos de entrada . Esto maneja las dos líneas superiores e inferiores de la pizza. El medio se repite reemplazando una cadena de espacios en blanco; las subvenciones$`
y$'
corresponden automáticamente a un número creciente y decreciente de espacios en blanco, lo que coloca el\ \
y/ /
apropiadamente.fuente
Python 2,
153151bytesPruébalo en línea
-2 bytes sustituyendo valores repetidos con variables gracias a @KoishoreRoy
fuente
print' '*=~n+'\\'+'_'*-~n+'_/'
no puedes escribirprint' '*i+' \\_'+'_'*n+'_/'
? (O enn
lugar dei
, pero estaba copiando la línea anterior.)-~n
ai
, porque en este momentoi==n
. Pero el segundo cambio es bueno. También acorté-~n
, gracias a tu idea-~n
ai
, porque estaba agregando el espacio. (Pero parece que lo resolvió por su cuenta de todos modos. También ya lo notén
yi
son lo mismo en este punto.)MATLAB, 333 bytes
(Intento de pereza)
Formateado:
La idea básica es que tengo manejadores de funciones para imprimir todo, y luego simplemente lo fuerza por fuerza bruta. El bucle for es para las
n
capas entre la parte superior e inferior de la capa interior. La repetición de(espacios) y
_
se hace usandoarrayfun
, con entradas de matriz. Intentaré pensar en formas más interesantes de hacer esto si tengo más tiempo más tarde.fuente
Carbón ,
5452 bytesExplicación:
Mi respuesta anterior fue en Retina, un idioma al que no había publicado una respuesta antes. Ahora, tienes una respuesta en Charcoal, a la que no he publicado una respuesta antes.
Pruébalo en línea!
fuente
PHP,
209 200 137135 bytesfinalmente venciendo a JS :)
Toma entrada de STDIN; correr
-nR
o pedir una pizza familiar .Descompostura
fuente
JavaScript (ES6), 205 bytes
¡Esta es mi primera publicación de arte ascii !
Agregue un
f=
al principio e invoque comof(arg)
.Nota: ¡ Todos los saltos de línea son necesarios!
Explicación
El código primero declara una matriz
a
. Luego declaraw
yu
tiene el valor de espacios en blanco y subrayado respectivamente. Luego, declara una variable de cadena para contener el valor de la corteza (que se puede calcular/\+(n*3+2 underscores)+/\
, como se menciona en el desafío). Después de eso, con unfor
bucle y aTemplate Literal
, se crea la mitad de la pizza (cada capa tienei
espacios en blanco al inicio y(n+1-i*2)+n+(n-1)
espacios en blanco entre\ \
y/ /
, dondei
representa el índice delfor
bucle). Por último, se crea la parte inferior de la pizza ((i whitespaces)+\+(n+2 underscores)+/
). Todas las partes se unen y salen (ted).Si por alguna razón el fragmento no muestra el arte ASCII correctamente, eche un vistazo aquí .
¡Feliz día de Deep Dish Pizza para todos!
fuente
Lote, 200 bytes
t
contiene la sangría izquierda mientrass
contiene el interior; sus_
s están sustituidos con espacios en las filas del medio.l
simplemente existe para evitar alguna repetición.fuente
V , 57 bytes
Pruébalo en línea!
Como (como de costumbre) contiene muchos caracteres desagradables que no son ASCII y no se pueden imprimir, aquí hay un hexdump:
Publicaré una explicación más detallada pronto, pero aquí hay una descripción general de alto nivel:
fuente
C (clang) ,
211215 bytesPruébalo en línea!
Pretty Code:
Ediciones:
fuente
CJam, 74 bytes
Manera demasiado tiempo. Voy a intentar otro enfoque.
Construye la cadena línea por línea. Nada muy loco
fuente
CJam, 89 bytes
Bueno, en realidad es más larga que mi otra solución en este momento, pero creo que es más fácil de jugar:
Seguimiento de pila:
fuente