Eche un vistazo a este diagrama de arte ascii de varias cajas:
+--------------------------------------------------------------+
| |
| +-------------------------------+ +-------+ |
| | | | | |
| | | | | |
| | +----------------+ | | | |
| | | | | +-------+ |
| | | | | |
| | | | | +-------+ |
| | +----------------+ | | | |
| | | | | |
| | | | | |
| +-------------------------------+ +-------+ |
| |
+--------------------------------------------------------------+
Cada cuadro se forma con caracteres de tubería para las partes verticales ( |
), guiones para las partes horizontales ( -
) y más para las esquinas ( +
).
El diagrama también muestra cuadros dentro de otros cuadros. Llamaremos al número de cajas que contiene una caja dentro de la capa de esa caja . Aquí está el diagrama nuevamente con la capa de cada cuadro anotado:
+--------------------------------------------------------------+
| |
| +-------------------------------+ +-------+ |
| | | | | |
| | | | 1 | |
| | +----------------+ | | | |
| | | | | 0 +-------+ |
| | | 2 | 1 | |
| | | | | +-------+ |
| | +----------------+ | | | |
| | | | 1 | |
| | | | | |
| +-------------------------------+ +-------+ |
| |
+--------------------------------------------------------------+
Su programa tomará un diagrama de caja similar al que está en la parte superior como entrada. Como salida, su programa debería generar el diagrama de caja con:
- El cuadro en la capa 0 debe llenarse con el carácter
#
(NB: solo habrá un cuadro en la capa 0); - Las casillas de la capa 1 deben llenarse con el personaje
=
; - Las casillas en la capa 2 deben llenarse con el personaje
-
; - Las casillas de la capa 3 deben llenarse con el personaje
.
; - Las casillas de la capa 4 y superiores no deben llenarse.
Así es como debería verse la salida de la entrada de ejemplo:
+--------------------------------------------------------------+
|##############################################################|
|###+-------------------------------+##########+-------+#######|
|###|===============================|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###|=====+----------------+========|##########|=======|#######|
|###|=====|----------------|========|##########+-------+#######|
|###|=====|----------------|========|##########################|
|###|=====|----------------|========|##########+-------+#######|
|###|=====+----------------+========|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###+-------------------------------+##########+-------+#######|
|##############################################################|
+--------------------------------------------------------------+
Aquí hay otra entrada y salida que muestra las capas 3, 4 y 5. Observe las líneas horizontales en la parte superior que están muy juntas. En estos casos, no hay suficiente espacio para llenar ningún personaje allí.
+-----------------------------------------------------------------------+
| +--------------------------------------------------------------+ |
| | +-----------------------------------------------------+ | |
| | | +-----------------------------------------+ | | |
| | | | +---------------------------+ | | | |
| | | | | +-------------+ | | | | |
| | | | | | | | | | | |
| | | | | +-------------+ | | | | |
| | | | +---------------------------+ | | | |
| | | | | | | |
| | | +-----------------------------------------+ | | |
| | | | | |
| | | | | |
| | +-----------------------------------------------------+ | |
| | | |
| +--------------------------------------------------------------+ |
| |
| |
| |
+-----------------------------------------------------------------------+
La salida:
+-----------------------------------------------------------------------+
|#####+--------------------------------------------------------------+##|
|#####|======+-----------------------------------------------------+=|##|
|#####|======|---------+-----------------------------------------+-|=|##|
|#####|======|---------|...........+---------------------------+.|-|=|##|
|#####|======|---------|...........| +-------------+ |.|-|=|##|
|#####|======|---------|...........| | | |.|-|=|##|
|#####|======|---------|...........| +-------------+ |.|-|=|##|
|#####|======|---------|...........+---------------------------+.|-|=|##|
|#####|======|---------|.........................................|-|=|##|
|#####|======|---------+-----------------------------------------+-|=|##|
|#####|======|-----------------------------------------------------|=|##|
|#####|======|-----------------------------------------------------|=|##|
|#####|======+-----------------------------------------------------+=|##|
|#####|==============================================================|##|
|#####+--------------------------------------------------------------+##|
|#######################################################################|
|#######################################################################|
|#######################################################################|
+-----------------------------------------------------------------------+
Otra entrada, esta vez con las líneas verticales juntas también:
+-------------+
|+-----------+|
|| ||
|| ||
|| ||
|+-----------+|
+-------------+
La salida:
+-------------+
|+-----------+|
||===========||
||===========||
||===========||
|+-----------+|
+-------------+
Notas adicionales
- Puede haber espacios en blanco alrededor del cuadro más externo.
- Las cajas no pueden tener un ancho o una altura interna de 0 (por lo que siempre tendrán algo de espacio dentro de ellas)
- Las cajas en la misma capa pueden tocarse entre sí.
import java.util.Scanner
conimport java.util.*
CJam,
11411110810410310298 bytesPruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
JavaScript ( ES6 ) 156
Ejecute el fragmento en Firefox para probar
fuente
CJam,
7674 bytesPruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
APL (Dyalog Unicode) , SBCS de 50 bytes
Pruébalo en línea!
s←' #=-.+|'
asignar una cadena a variables
⎕
entrada evaluada, debe ser una matriz de caracteres⎕⍳⍨s
reemplazar cada elemento de⎕
con su índice ens
a←
asignar aa
5=
devolver una matriz booleana de donde están los+
-esa
(s[5]
es'+'
)(⊢ׯ1*+⍀++\)
Este es un tren de funciones:+\
matriz de sumas parciales por fila+
más+⍀
matriz de sumas parciales por columna¯1*
uno negativo al poder de - convierte las probabilidades en ¯1 y unifica en 1⊢×
multiplique por el argumento del tren: ponga a cero todo excepto las esquinas de la caja+⍀+\
sumas parciales por columna de sumas parciales por fila5⌊
mínimo de eso y 55|
módulo 5a,¨
emparejar los elementos dea
y de la matriz actual0~¨⍨
eliminar 0 de los pares⊃¨
primero cada uno de lo que quedas[ ]
usar cada elemento como índice ens
fuente
↑⍞⍞...⍞
evalúa de derecha a izquierda. Para el primer ejemplo no importó y olvidé mencionar esto..
s donde no debería> <> ,
11811587 bytesPruébalo en línea!
Si uno de los símbolos no fuera un,Eh, lo hizo un-
entonces esto podría ser 6 bytes más corto.pocomás pequeño de todos modosCómo funciona:
fuente
C (gcc) ,
190179 bytes-11 bytes gracias a ceilingcat
Falla si sizeof (int)> 9, pero luego puede consolarse con el hecho de que su computadora es del futuro.
Pruébalo en línea!
fuente