L'arte ASCII è divertente. I moderni editor di testo sono molto bravi a manipolare il testo. I moderni linguaggi di programmazione sono all'altezza del compito?
Un compito comune nella manipolazione dell'arte ASCII è ritagliare il testo in un rettangolo tra due caratteri. Questo è il compito che devi implementare in questa sfida.
Dettagli
Il tuo programma avrà 3 input:
- il primo è il carattere "iniziale" del blocco, che segna l'angolo in alto a sinistra
- il secondo è il carattere 'fine' del blocco, che segna l'angolo in basso a destra
- il terzo è una forma di testo multilinea, una stringa, o un elenco di stringhe, o un nome file o altro
Il risultato sarà un testo multilinea (di nuovo, in uno dei formati sopra) ritagliato nel rettangolo tra gli input dati. Si noti che i primi due ingressi potrebbero non essere univoci.
Custodie per bordi
Le scatole devono sempre avere un volume di almeno 2, quindi questi:
() (
)
sono scatole ma queste:
)( ) (
( )
non lo sono (con start = (e end = )).
L'input conterrà solo una casella. Pertanto, i caratteri di inizio e fine devono essere presenti solo una volta, a meno che non siano dello stesso carattere, nel qual caso devono apparire esattamente due volte.
Inoltre, ogni linea nell'input deve essere lunga almeno quanto la distanza dall'inizio di una linea al bordo destro della casella nell'input.
Non è necessario che il tuo programma gestisca input non validi; possono comportare comportamenti indefiniti.
Regole
Si applicano le regole tipiche del code-golf. Il codice più corto vince.
Esempi
Giorno soleggiato: start: ( end: ) input:
This is some text
. (but this text
is in a box ).
So only it is important.
Produzione:
(but this text
is in a box )
Nota anche lo stripping dello spazio orizzontale. Le colture d'arte ASCII sono 2d.
Giorno di pioggia: start: ( end: ) input:
This is some text (
But is that even )
really a box?
Produzione:
(
)
Stesso inizio / fine: start: / end: / input:
Oh, I get how this could be useful
/----------------------------\
| All this text is in a box! |
\----------------------------/
Produzione:
/----------------------------\
| All this text is in a box! |
\----------------------------/
Inserimento non valido: start: ( end: ) input:
Boxes are rectangular ( so this has
0 volume ) which is illegal.
Ingresso 2 non valido: start: ( end: ) input:
(The lines must already be square
so this line that is too short
relative to this end, is illegal)