Todo programador sabe que os colchetes []{}()<>
são realmente divertidos. Para exacerbar essa diversão, grupos de colchetes entrelaçados podem ser transformados em diagramas fofos e confusos.
Digamos que você tenha uma string que contenha colchetes balanceados, como [{][<(]})>(())
. O primeiro passo é girar a corda 45 graus no sentido horário. (No Mathematica, isso quase pode ser feito Rotate[ur_string,-pi/4]
). Aqui está o resultado do primeiro passo:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Em seguida, adicione um espaço diagonal entre cada caractere.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Em seguida, comece com o colchete mais à esquerda e faça um quadrado entre ele e seu parceiro no crime.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
Repita esse processo com cada par de colchetes, substituindo os caracteres anteriores por +
s, se necessário.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
Continue até ter feito tudo de bom e quadrado.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
Entrada
A entrada será uma única linha de colchetes balanceados e nenhum outro caractere, com cada colchete sendo um deles []{}()<>
. Cada tipo de colchete é equilibrado individualmente, embora tipos diferentes possam se sobrepor (é isso que torna os quadrados interessantes). Uma nova linha à direita é opcional.
Saída
A saída será o padrão quadrado intertravado gerado a partir da cadeia de colchetes. Os espaços à direita e a nova linha à direita são opcionais, mas não deve haver espaços em branco à esquerda.
Objetivo
Isso é código-golfe, o menor número de bytes vence.
[[]]
podemos produzir dois quadrados sobrepostos ou precisamos gerar um quadrado dentro do outro?