ASCII-Kunst macht Spaß. Moderne Texteditoren können sehr gut Text bearbeiten. Sind moderne Programmiersprachen der Aufgabe gewachsen?
Eine häufige Aufgabe bei der Bearbeitung von ASCII-Grafiken besteht darin, Text auf ein Rechteck zwischen zwei Zeichen zuzuschneiden. Dies ist die Aufgabe, die Sie in dieser Herausforderung umsetzen müssen.
Einzelheiten
Ihr Programm wird 3 Eingaben annehmen:
- Das erste ist das 'Start'-Zeichen des Blocks - es markiert die obere linke Ecke
- Das zweite ist das 'Ende'-Zeichen des Blocks - es markiert die untere rechte Ecke
- Das dritte ist eine Form von mehrzeiligem Text, entweder eine Zeichenfolge oder eine Liste von Zeichenfolgen oder ein Dateiname oder was auch immer
Das Ergebnis ist mehrzeiliger Text (ebenfalls in einem der oben genannten Formate), der auf das Rechteck zwischen den angegebenen Eingaben zugeschnitten wird. Beachten Sie, dass die ersten beiden Eingänge möglicherweise nicht eindeutig sind.
Edge-Fälle
Boxen müssen immer ein Volumen von mindestens 2 haben.
() (
)
sind Boxen, aber diese:
)( ) (
( )
sind nicht (mit start = (
und end = )
).
Die Eingabe enthält nur eine Box. Daher dürfen Start- und Endzeichen nur einmal vorkommen, es sei denn, sie sind dasselbe Zeichen. In diesem Fall müssen sie genau zweimal vorkommen.
Außerdem muss jede Zeile in der Eingabe mindestens so lang sein wie der Abstand zwischen dem Beginn einer Zeile und dem rechten Rand des Felds in der Eingabe.
Ihr Programm muss keine ungültigen Eingaben verarbeiten. Sie können zu undefiniertem Verhalten führen.
Regeln
Es gelten die typischen Code-Golf-Regeln. Kürzester Code gewinnt.
Beispiele
Sonniger Tag: start: ( end: ) input:
This is some text
. (but this text
is in a box ).
So only it is important.
Ausgabe:
(but this text
is in a box )
Beachten Sie auch das Entfernen des horizontalen Raums. ASCII-Kunstpflanzen sind 2d.
Regnerischen Tag: start: ( end: ) input:
This is some text (
But is that even )
really a box?
Ausgabe:
(
)
Gleicher Anfang / Ende: start: / end: / input:
Oh, I get how this could be useful
/----------------------------\
| All this text is in a box! |
\----------------------------/
Ausgabe:
/----------------------------\
| All this text is in a box! |
\----------------------------/
Ungültige Eingabe: start: ( end: ) input:
Boxes are rectangular ( so this has
0 volume ) which is illegal.
Ungültige Eingabe 2: start: ( end: ) input:
(The lines must already be square
so this line that is too short
relative to this end, is illegal)