Basado en esta pregunta.
Dada una cadena, reemplace cada corchete ()[]{}<>
con un corchete del tipo apropiado para que los corchetes coincidan, y los corchetes anidados se ciclan de la siguiente manera:
- Los más externos son
()
- Directamente dentro de
()
debe ser[]
- Directamente dentro de
[]
debe ser{}
- Directamente dentro de
{}
debe ser<>
- Directamente dentro de
<>
será()
nuevamente (ciclos)
Todos los caracteres sin corchetes deben permanecer exactamente como están. Los corchetes abiertos solo pueden reemplazarse con corchetes abiertos de algún tipo, y los corchetes cerrados con corchetes cerrados.
La entrada siempre lo hará posible. Esto significa que sus corchetes coinciden correctamente si se ignora su tipo. Entonces, {ab<)c]
es una entrada válida, pero ab)(cd
o ab((cd
no lo son.
Ejemplos:
2#jd {¤>. = 2#jd (¤).
abcdef = abcdef
(3×5+(4-1)) = (3×5+[4-1])
<<<>><<>><<<<<<>>>>>>> = ([{}][{}][{<([{}])>}])
El uso de la transformación nativa de entrada de esta manera (sintaxis automática del lenguaje) no está permitido.
Como siempre: el código más corto gana.
fuente
Respuestas:
JavaScript (ES6), 79 bytes
Casos de prueba
Mostrar fragmento de código
fuente
Lex, 132 bytes
fuente
flex
como compilador) eliminando las últimas dos o tres líneas respectivamente, a un costo de cierto número de bytes (probablemente 2, 3 o 4; las reglas son algo poco claras) en penalizaciones por la-ll
opción de línea de comando al vincular el archivo C resultante. (Es decir, en lugar de compilar conlex brackets.l; cc lex.yy.c
, compila conlex brackets.l; cc lex.yy.c -ll
). Definitivamente, es una compensación que vale la pena hacer en esta situación.Java, 155 bytes
Lambda que toma un
char[]
argumento único. Recorremos la matriz, almacenando su posición en nuestra cadena de corchetes (s
) en una variable (k
). Verificamos si es un corchete de apertura o cierre (s.indexAt()
), y lo reemplazamos con el corchete apropiado en función de su nivel de anidamiento (s.charAt()
), haciendo un bucle apropiado con%4
fuente
Haskell, 126 bytes
Pruébalo con ideone. Uso:
Explicación
f
toma tres argumentos: una cadena que funciona como pila para cerrar corchetes, una intn
para contar la profundidad de anidamiento y la cadena de entrada.fuente