Defino cuatro estilos de caja:
+-----+ ooooooo ^^^^^ *******
| 1 | o 2 o < 3 > * 4 *
| | o o < > * *
+-----+ ooooooo vvvvv *******
Escriba un programa o función que le dé un número entero y una cadena encontrará uno de los cuadros anteriores dentro de la cadena y cambiará su estilo al estilo de cuadro solicitado por el usuario. Por ejemplo:
1
This is a test document.
It ********* has
no *purpose* other than
dem*onstrat*ion.
*********
Se convierte en:
This is a test document.
It +-------+ has
no |purpose| other than
dem|onstrat|ion.
+-------+
Puede suponer que la entrada contiene exactamente un cuadro válido que es al menos 3x3. Su código debe ignorar los cuadros incompletos / incorrectos:
ooooooooooooooooooooooooooooooooo
o This is not a box. o This is. o
ooooooooooo ooooo ooooooooooooooo
^^^^ ######
<NOPE> #NOPE#
vVVv ######
El código más corto en bytes gana.
o This is. o
yo This is no
(con líneas deo
arriba y abajo, por supuesto).Respuestas:
Julia,
995818713613 bytesSin disculpas con la explicación:
Al contrario de cómo lo abordé por primera vez, este código solo funcionará correctamente para los números de tipo "válidos": 1, 2, 3 o 4. Se divide en dos partes: un buscador de cajas y un reemplazador de cajas. El código del buscador de cajas, función
f(t)
, utiliza expresiones regulares para localizar las partes superiores y, para las cajas más simples (tipos 2 y 4), las partes inferiores.La primera expresión regular es la forma más sencilla que pude encontrar para encontrar las tapas de cajas. Aquí está la lógica:
El código se usa así:
La impresión no está incluida en la función, ya que el formato de salida no está especificado: solo devuelvo la cadena, puede imprimirla después como se ve arriba.
fuente