L'art ASCII est amusant. Les éditeurs de texte modernes sont très bons pour manipuler le texte. Les langages de programmation modernes sont-ils à la hauteur?
Une tâche courante dans la manipulation d'œuvres d'art ASCII consiste à rogner le texte dans un rectangle entre deux caractères. C'est la tâche que vous devez mettre en œuvre dans ce défi.
Détails
Votre programme prendra 3 entrées:
- le premier est le caractère 'start' du bloc - marquant le coin supérieur gauche
- le second est le caractère «fin» du bloc - marquant le coin inférieur droit
- le troisième est une forme de texte multiligne, soit une chaîne, soit une liste de chaînes, soit un nom de fichier, ou autre
Le résultat sera un texte multiligne (encore une fois, dans l'un des formats ci-dessus) rogné dans le rectangle entre les entrées données. Notez que les deux premières entrées peuvent ne pas être uniques.
Cas de bord
Les boîtes doivent toujours avoir un volume d'au moins 2. Ainsi:
() (
)
sont des boîtes mais celles-ci:
)( ) (
( )
ne le sont pas (avec start = (et end =) ).
L'entrée ne contiendra qu'une seule case. Ainsi, les caractères de début et de fin ne doivent apparaître qu'une seule fois, sauf s'ils sont identiques, auquel cas ils doivent apparaître exactement deux fois.
De plus, chaque ligne de l'entrée doit être au moins aussi longue que la distance entre le début d'une ligne et le bord droit de la zone de l'entrée.
Votre programme n'a pas besoin de gérer des entrées invalides; ils peuvent entraîner un comportement indéfini.
Règles
Des règles de code-golf typiques s'appliquent. Le code le plus court gagne.
Exemples
Journée ensoleillée: start: ( end: ) input:
This is some text
. (but this text
is in a box ).
So only it is important.
Production:
(but this text
is in a box )
Notez également le dépouillement de l'espace horizontal. Les cultures d'art ASCII sont 2D.
Jour de pluie: start: ( end: ) input:
This is some text (
But is that even )
really a box?
Production:
(
)
Même début / fin: start: / end: / input:
Oh, I get how this could be useful
/----------------------------\
| All this text is in a box! |
\----------------------------/
Production:
/----------------------------\
| All this text is in a box! |
\----------------------------/
Entrée invalide: start: ( end: ) input:
Boxes are rectangular ( so this has
0 volume ) which is illegal.
Entrée non valide 2: start: ( end: ) input:
(The lines must already be square
so this line that is too short
relative to this end, is illegal)