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.
fonte
[[]]
podemos produzir dois quadrados sobrepostos ou precisamos gerar um quadrado dentro do outro?Respostas:
JavaScript (ES6),
269 274 278 296261 bytesEditar 4 bytes salvos thx @Neil
TESTE
fonte
[...r].map
?[...r].map(c=>c||' ')
.r.map
porque r é uma matriz esparsa e o mapa ignora os elementos ausentes. Então eu agora usar g, que é preenchido (e há tantas linhas como colunas na saída)r.map
, eu disse[...r].map
, e[...r]
NÃO é uma matriz esparsa, como você se mencionou no comentário codegolf.stackexchange.com/a/61505 5.Python 3, 226
Exemplo . Explicação:
fonte
pb - 449 bytes
Fiquei muito animado quando li isso porque tenho uma linguagem que imprime diretamente em uma posição! Esse desafio sobre o posicionamento das saídas deve ser fácil e curto!
Então eu lembrei que pb é longwinded de qualquer maneira.
Com comentários:
fonte
CJam, 117 bytes
Experimente aqui.
fonte
Ruby, 268
ungolfed no programa de teste
fonte