Las cajas ASCII se ven así:
++ +---+ +------+ +---+ +---+
++ | | | | | | | |
| | | | | | | |
+-+ | | | | | | | |
+-+ | | | | | | +---+
+---+ | | | |
+--+ | | | | ++
| | | | | | ||
| | +------+ | | ||
+--+ | | ||
+---+ ||
||
+-----+ ||
+------------+ | | ++
| | | |
| | | |
+------------+ +-----+
Aquí hay algunos ejemplos de los mismos cuadros ASCII, implosionados:
++ +- -+ +- -+ +- -+ +- -+
++ | - | | - - | | - | | - |
| | | -- | | | | |
+-+ | | | | " | - |
+-+ | - | || | | +- -+
+- -+ | | | |
+--+ | -- | | | ++
| | | - - | " ||
| | +- -+ | | ||
+--+ | - | | |
+- -+ | |
-- ||
- - +- -+ ||
+- - - -+ | - - | ++
| -- -- | | = |
| -- -- | | - - |
+- - - -+ +- -+
- -
--
Aquí hay un enlace a todos estos cuadros de casos de prueba en un formato más fácil de copiar. El orden es todas las entradas seguidas de todas las salidas en el mismo orden.
Su objetivo es tomar un cuadro ASCII como entrada y devolver el cuadro implosionado. Las reglas de implosión son:
- "+" nunca cambia; tampoco "-" o "|" directamente adyacente a "+"
- A partir de las esquinas, el "-" y "|" muévete hacia adentro un espacio más que el mismo personaje más cerca de la esquina. Si un "-" y "|" alguna vez se movería al mismo lugar, ninguno se movería.
- Si un "-" y "-" se mueven al mismo lugar, coloque un "=" en ese lugar. Si un "|" y "|" mover al mismo lugar, poner un "en ese lugar. Estos cuentan como dos de sus respectivos personajes en el mismo lugar moviéndose en direcciones opuestas.
- Dos "-" o dos "|" pueden pasar uno al lado del otro, como se ve en el ejemplo inferior izquierdo.
- Si la caja es lo suficientemente delgada, comenzará a expandirse hacia afuera de la misma manera, siempre alejándose del lado en el que comenzó.
- El resultado debe ser simétrico a través de la línea central en las direcciones x e y (ignorando las nuevas líneas); esto incluye espacios, por lo que el resultado puede necesitar ser rellenado con espacios para satisfacer eso.
Detalles de la regla:
- Este es el código de golf, por lo que gana el programa más corto en bytes.
- Se aplican lagunas estándar.
- Puede suponer que cada línea termina en un carácter de nueva línea.
- Los únicos caracteres en la cadena de entrada serán "+", "-", "|", "" y "\ n" (nueva línea), y su cadena de salida debe seguir las mismas reglas, con la adición de "=" y "como posibles personajes.
- Opcionalmente, puede tener una nueva línea final al final de la última línea.
- El cuadro ASCII más pequeño que necesita manejar es el ejemplo superior izquierdo. Cada caja ASCII tendrá exactamente 4 "+" s, exactamente en sus esquinas.
- Deberá manejar cajas de tamaño
m x n
para cualquier número enterom,n
tal que2<=m,n<256
(el mayor tamaño de cadena posible255*(255+1)
) - Puede suponer que siempre obtendrá un único cuadro ASCII válido como entrada.
||
en ese ejemplo debe ser un "
o algo ...
"
? ¿Supongo que "
solo aparece en 3 de ancho o mayor?
"
iría? ¿A la izquierda o a la derecha? No puede ser ambos, pero tampoco puede serlo porque el resultado es simétrico.