Dê uma olhada neste diagrama de arte ascii de várias caixas:
+--------------------------------------------------------------+
| |
| +-------------------------------+ +-------+ |
| | | | | |
| | | | | |
| | +----------------+ | | | |
| | | | | +-------+ |
| | | | | |
| | | | | +-------+ |
| | +----------------+ | | | |
| | | | | |
| | | | | |
| +-------------------------------+ +-------+ |
| |
+--------------------------------------------------------------+
Cada caixa é formada com caracteres de tubo para as partes verticais ( |
), traços para as partes horizontais ( -
) e vantagens para os cantos ( +
).
O diagrama também mostra caixas dentro de outras caixas. Vamos chamar o número de caixas que uma caixa está contida na camada dessa caixa . Aqui está o diagrama novamente com a camada de cada caixa anotada:
+--------------------------------------------------------------+
| |
| +-------------------------------+ +-------+ |
| | | | | |
| | | | 1 | |
| | +----------------+ | | | |
| | | | | 0 +-------+ |
| | | 2 | 1 | |
| | | | | +-------+ |
| | +----------------+ | | | |
| | | | 1 | |
| | | | | |
| +-------------------------------+ +-------+ |
| |
+--------------------------------------------------------------+
Seu programa utilizará um diagrama de caixa semelhante ao da parte superior como entrada. Como saída, seu programa deve exibir o diagrama de caixa com:
- A caixa na camada 0 deve ser preenchida com o caractere
#
(Nota: sempre haverá uma caixa na camada 0); - Caixas na camada 1 devem ser preenchidas com o caractere
=
; - Caixas na camada 2 devem ser preenchidas com o caractere
-
; - As caixas na camada 3 devem ser preenchidas com o caractere
.
; - Caixas na camada 4 e acima não devem ser preenchidas.
Aqui está como deve ser a saída da entrada de exemplo:
+--------------------------------------------------------------+
|##############################################################|
|###+-------------------------------+##########+-------+#######|
|###|===============================|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###|=====+----------------+========|##########|=======|#######|
|###|=====|----------------|========|##########+-------+#######|
|###|=====|----------------|========|##########################|
|###|=====|----------------|========|##########+-------+#######|
|###|=====+----------------+========|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###+-------------------------------+##########+-------+#######|
|##############################################################|
+--------------------------------------------------------------+
Aqui está outra entrada e saída mostrando as camadas 3, 4 e 5. Observe as linhas horizontais na parte superior que estão muito próximas. Nesses casos, não há espaço suficiente para preencher nenhum caractere lá.
+-----------------------------------------------------------------------+
| +--------------------------------------------------------------+ |
| | +-----------------------------------------------------+ | |
| | | +-----------------------------------------+ | | |
| | | | +---------------------------+ | | | |
| | | | | +-------------+ | | | | |
| | | | | | | | | | | |
| | | | | +-------------+ | | | | |
| | | | +---------------------------+ | | | |
| | | | | | | |
| | | +-----------------------------------------+ | | |
| | | | | |
| | | | | |
| | +-----------------------------------------------------+ | |
| | | |
| +--------------------------------------------------------------+ |
| |
| |
| |
+-----------------------------------------------------------------------+
A saída:
+-----------------------------------------------------------------------+
|#####+--------------------------------------------------------------+##|
|#####|======+-----------------------------------------------------+=|##|
|#####|======|---------+-----------------------------------------+-|=|##|
|#####|======|---------|...........+---------------------------+.|-|=|##|
|#####|======|---------|...........| +-------------+ |.|-|=|##|
|#####|======|---------|...........| | | |.|-|=|##|
|#####|======|---------|...........| +-------------+ |.|-|=|##|
|#####|======|---------|...........+---------------------------+.|-|=|##|
|#####|======|---------|.........................................|-|=|##|
|#####|======|---------+-----------------------------------------+-|=|##|
|#####|======|-----------------------------------------------------|=|##|
|#####|======|-----------------------------------------------------|=|##|
|#####|======+-----------------------------------------------------+=|##|
|#####|==============================================================|##|
|#####+--------------------------------------------------------------+##|
|#######################################################################|
|#######################################################################|
|#######################################################################|
+-----------------------------------------------------------------------+
Outra entrada, desta vez com as linhas verticais próximas também:
+-------------+
|+-----------+|
|| ||
|| ||
|| ||
|+-----------+|
+-------------+
A saída:
+-------------+
|+-----------+|
||===========||
||===========||
||===========||
|+-----------+|
+-------------+
Notas Adicionais
- Pode haver espaço em branco ao redor da caixa mais externa.
- As caixas não podem ter uma largura ou altura interna de 0 (portanto, sempre haverá algum espaço dentro delas)
- Caixas na mesma camada podem se tocar.
import java.util.Scanner
porimport java.util.*
CJam,
11411110810410310298 bytesExperimente online no intérprete CJam .
Como funciona
fonte
JavaScript ( ES6 ) 156
Execute o snippet no Firefox para testar
fonte
CJam,
7674 bytesExperimente online no intérprete CJam .
Como funciona
fonte
APL (Dyalog Unicode) , SBCS de 50 bytes
Experimente online!
s←' #=-.+|'
atribuir uma string a variávels
⎕
entrada avaliada, deve ser uma matriz de caracteres⎕⍳⍨s
substitua todos os elementos⎕
com seu índice ems
a←
atribuir aa
5=
retorna uma matriz booleana de onde os+
-es estãoa
(s[5]
é'+'
)(⊢ׯ1*+⍀++\)
este é um trem de funções:+\
matriz de somas parciais por linha+
mais+⍀
matriz de somas parciais por coluna¯1*
negativo ao poder de - transforme probabilidades em ¯1 e iguala em 1⊢×
multiplique pelo argumento do trem - zere tudo, exceto cantos da caixa+⍀+\
somas parciais por coluna de somas parciais por linha5⌊
mínimo disso e 55|
módulo 5a,¨
emparelhar os elementos dea
e da matriz atual0~¨⍨
remova 0 dos pares⊃¨
primeiro cada um do que restas[ ]
use cada elemento como um índice ems
fonte
↑⍞⍞...⍞
avalia da direita para a esquerda. Para o primeiro exemplo, não importava e eu esqueci de mencionar isso..
s onde não deve> <> ,
118 11587 bytesExperimente online!
Se um dos símbolos não fosse umEh, ficou um-
, isso poderia ser 6 bytes mais curto.poucomenor de qualquer maneiraComo funciona:
fonte
C (gcc) ,
190179 bytes-11 bytes graças ao ceilingcat
Falha se sizeof (int)> 9, mas você pode se consolar com o fato de que seu computador é do futuro.
Experimente online!
fonte