El arte ASCII es divertido. Los editores de texto modernos son muy buenos manipulando texto. ¿Los lenguajes de programación modernos están a la altura?
Una tarea común en la manipulación de arte ASCII es recortar texto en un rectángulo entre dos caracteres. Esta es la tarea que debe implementar en este desafío.
Detalles
Su programa tomará 3 entradas:
- el primero es el carácter de "inicio" del bloque, que marca la esquina superior izquierda
- el segundo es el carácter 'final' del bloque, que marca la esquina inferior derecha
- el tercero es alguna forma de texto de varias líneas, ya sea una cadena, o una lista de cadenas, o nombre de archivo, o lo que sea
El resultado será texto multilínea (nuevamente, en cualquiera de los formatos anteriores) recortado en el rectángulo entre las entradas dadas. Tenga en cuenta que las dos primeras entradas pueden no ser únicas.
Casos de borde
Las cajas siempre deben tener un volumen de al menos 2. Por lo tanto, estas:
() (
)
son cajas pero estas:
)( ) (
( )
no lo son (con inicio = (y fin = )).
La entrada solo contendrá una caja. Por lo tanto, los caracteres iniciales y finales solo deben aparecer una vez, a menos que sean el mismo carácter, en cuyo caso deben aparecer exactamente dos veces.
Además, cada línea en la entrada debe ser al menos tan larga como la distancia desde el inicio de una línea hasta el borde derecho del cuadro en la entrada.
Su programa no necesita manejar entradas inválidas; pueden dar lugar a un comportamiento indefinido.
Reglas
Se aplican las reglas típicas de código de golf. El código más corto gana.
Ejemplos
Día soleado: start: ( end: ) input:
This is some text
. (but this text
is in a box ).
So only it is important.
Salida:
(but this text
is in a box )
Tenga en cuenta la eliminación del espacio horizontal también. Los cultivos de arte ASCII son 2d.
Día lluvioso: start: ( end: ) input:
This is some text (
But is that even )
really a box?
Salida:
(
)
Mismo inicio / final: start: / end: / input:
Oh, I get how this could be useful
/----------------------------\
| All this text is in a box! |
\----------------------------/
Salida:
/----------------------------\
| All this text is in a box! |
\----------------------------/
Entrada inválida: start: ( end: ) input:
Boxes are rectangular ( so this has
0 volume ) which is illegal.
Entrada inválida 2: start: ( end: ) input:
(The lines must already be square
so this line that is too short
relative to this end, is illegal)