Es el cumpleaños de mi amigo pronto y como él es un programador y amante del arte ASCII, ¡pensé en hacerle un pastel ASCII!
Lamentablemente, sigo olvidando su edad actual, por lo que me gustaría tener un programa para mi horno ASCII, que hornea un pastel con un número específico de velas, por lo que no tengo que hacerlo yo mismo si me equivoco con su años.
Los hornos ASCII solo tienen memoria y capacidad de almacenamiento limitadas, por lo que deben usar la menor cantidad de bytes posible .
Tu tarea:
Escriba un programa que envíe un pastel de cumpleaños a la consola, con tantas velas como lo especifique la entrada.
Los requisitos de pastel son:
- Tiene que tener un borde, formado por líneas horizontales
-
y verticales|
, y vértices+
. - Al menos 5 caracteres de ancho (incluido el borde del pastel
|
) - Al menos 5 caracteres de altura (incluido el borde del pastel
-
) - Tiene que haber un espacio en blanco
entre el borde del pastel y la primera base de vela (no la llama), en cada lado, excepto si hay una llama en ese espacio. Una llama o una base de vela no deberían poder solapar los bordes del pastel.
- El ancho máximo del pastel es de 9 caracteres, por lo que hay un máximo de 5 velas por fila.
- Como no queremos que nuestro pastel sea bidimensional, tiene que tener 2 filas adicionales de alto, para darle algo de volumen. Agregue otro borde en la parte inferior y conecte los vértices con los de arriba, nuevamente utilizando los caracteres ASCII de arriba (
-
,|
y+
).
Los requisitos de velas son:
- Consiste en la base
|
y la llama*
, con la llama apilada en la parte superior de la base. - Las velas no pueden estar directamente adyacentes entre sí, excepto en diagonal.
- Las velas se colocan de izquierda a derecha, luego de arriba a abajo, con 5 en una línea como máximo.
(Nota: si hubiera 5 velas en la fila anterior, la siguiente fila no puede tener 5 también, ya que serían adyacentes).
Notas adicionales:
- El ancho del pastel depende del número de velas en la primera fila, pero debe tener un mínimo de 5 caracteres y un máximo de 9 caracteres de ancho.
- Las velas se llenan comenzando en la fila superior, de izquierda a derecha. Una vez que una fila está llena, la siguiente debe comenzar en la fila debajo de la primera.
Entrada:
Puede aceptar un número en el formato (razonable) que desee.
Para este desafío, puede suponer que el número está entre 0 y 2 31 (sin incluir 0), aunque no reconozco a alguien que es tan viejo.
Salida:
Puede devolver una cadena o escribir directamente el pastel resultante en la consola de salida.
Reglas:
- Las lagunas estándar están prohibidas.
- Este es el código de golf , por lo que gana el código más corto en bytes, en cualquier idioma.
Ejemplos:
Entrada: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Entrada: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
Entrada: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
¡Buena suerte!
Respuestas:
Carbón ,
767170 6646 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: guardado 1 byte gracias a @ASCII_Only. Ahorró 20 bytes masivos al descubrir una forma ordenada de dibujar las velas. Explicación:
Calcule el tamaño de todo el pastel, incluido el volumen adicional y solo la parte superior del pastel para que puedan dibujarse. ((
=
= ASCII 61) = (+
= ASCII 43) + 9 * 2 para el volumen extra.)Mueva el cursor a la primera fila de 5 velas. Pase por cada vela.
Imprima una vela y mueva a la derecha dos caracteres para la siguiente vela.
Sin embargo, después de las velas (indexadas a cero) 4, 8, 13, 17, 22, etc. (que están al final de una fila),
mueva el cursor a la primera vela en la siguiente fila. ¡Esto funciona tanto en filas pares como impares!
fuente
A
al principio: P (por cierto, gracias por encontrar otro caso de golfista (no tan))Jalea , 67 bytes
Un enlace monádico que toma un número y devuelve una lista de caracteres o un programa completo que imprime la salida.
Pruébalo en línea!
¿Cómo?
fuente
Japt , 94 bytes
Pruébalo en línea!
fuente