Todo programador sabe que los corchetes []{}()<>
son realmente divertidos. Para exacerbar esta diversión, los grupos de brackets entrelazados se pueden transformar en diagramas lindos y difusos.
Digamos que tiene una cadena que contiene corchetes equilibrados, como [{][<(]})>(())
. El primer paso es rotar la cuerda 45 grados en el sentido de las agujas del reloj. (En Mathematica, esto casi se puede hacer con Rotate[ur_string,-pi/4]
). Aquí está el resultado del primer paso:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Luego agregue un espacio diagonal entre cada personaje.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Luego, comience con el corchete más a la izquierda y dibuje un cuadrado entre este y su compañero en el crimen.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
Repita este proceso con cada par de paréntesis, sobrescribiendo los caracteres anteriores con +
s si es necesario.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
Continúa hasta que hayas hecho todo bonito y cuadrado.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
Entrada
La entrada será una sola línea de corchetes balanceados y ningún otro carácter, con cada corchete siendo uno de ellos []{}()<>
. Cada tipo de paréntesis se equilibra individualmente, aunque pueden superponerse diferentes tipos (esto es lo que hace que los cuadrados se vean interesantes). Una nueva línea final es opcional.
Salida
La salida será el patrón cuadrado entrelazado generado a partir de la cadena de paréntesis. Los espacios finales y la nueva línea final son opcionales, pero no debe haber espacios en blanco iniciales.
Gol
Este es el código de golf, gana la menor cantidad de bytes.
fuente
[[]]
¿podemos generar dos cuadrados superpuestos o tenemos que generar un cuadrado dentro del otro?Respuestas:
JavaScript (ES6),
269 274 278 296261 bytesEditar Guardado 4 bytes thx @Neil
PRUEBA
fuente
[...r].map
?[...r].map(c=>c||' ')
.r.map
porque r es una matriz dispersa y el mapa omite elementos faltantes. Así que ahora uso g, que está lleno (y hay tantas filas como columnas en la salida)r.map
, dije[...r].map
, y[...r]
NO es una matriz escasa, como te mencionaste en codegolf.stackexchange.com/a/61505 comentario 5.Pitón 3, 226
Ejemplo . Explicación:
fuente
pb - 449 bytes
¡Estaba muy emocionado cuando leí esto porque tengo un lenguaje que imprime directamente en una posición! ¡Este desafío sobre las salidas de posicionamiento debe ser fácil y corto!
Entonces recordé que pb es de largo aliento de todos modos.
Con comentarios:
fuente
CJam, 117 bytes
Pruébalo aquí.
fuente
Rubí, 268
sin golf en el programa de prueba
fuente