Sztuka ASCII jest fajna. Nowoczesne edytory tekstu są bardzo dobre w manipulowaniu tekstem. Czy nowoczesne języki programowania są w stanie sprostać zadaniu?
Jednym z typowych zadań w manipulacji grafiką ASCII jest przycinanie tekstu do prostokąta między dwoma znakami. To zadanie musisz wykonać w tym wyzwaniu.
Detale
Twój program pobierze 3 dane wejściowe:
- pierwszy to znak „początku” bloku - oznaczenie lewego górnego rogu
- drugi to „koniec” znaku bloku - oznaczenie prawego dolnego rogu
- trzeci to jakaś forma tekstu wielowierszowego, albo ciąg, albo lista ciągów, nazwa pliku lub cokolwiek innego
Wynikiem będzie tekst wielowierszowy (ponownie w dowolnym z powyższych formatów) przycięty do prostokąta między podanymi danymi wejściowymi. Zauważ, że pierwsze dwa dane wejściowe mogą nie być unikalne.
Skrzynie na brzeg
Pudełka muszą zawsze mieć objętość co najmniej 2. Zatem te:
() (
)
są pudełka, ale te:
)( ) (
( )
nie są (z początkiem = (i końcem = )).
Dane wejściowe będą zawierać tylko jedno pole. Dlatego początkowy i końcowy znak musi wystąpić tylko raz, chyba że jest to ten sam znak, w którym to przypadku musi wystąpić dokładnie dwa razy.
Dodatkowo każda linia na wejściu musi być co najmniej tak długa, jak odległość od początku linii do prawej krawędzi pola na wejściu.
Twój program nie musi obsługiwać nieprawidłowych danych wejściowych; mogą powodować niezdefiniowane zachowanie.
Zasady
Obowiązują typowe zasady gry w golfa. Najkrótszy kod wygrywa.
Przykłady
Słoneczny dzień: start: ( end: ) input:
This is some text
. (but this text
is in a box ).
So only it is important.
Wynik:
(but this text
is in a box )
Zwróć też uwagę na usuwanie poziomej przestrzeni. Uprawy artystyczne ASCII to 2d.
Deszczowy dzień: start: ( end: ) input:
This is some text (
But is that even )
really a box?
Wynik:
(
)
Ten sam początek / koniec: start: / end: / input:
Oh, I get how this could be useful
/----------------------------\
| All this text is in a box! |
\----------------------------/
Wynik:
/----------------------------\
| All this text is in a box! |
\----------------------------/
Niepoprawne dane wejściowe: start: ( end: ) input:
Boxes are rectangular ( so this has
0 volume ) which is illegal.
Nieprawidłowe dane wejściowe 2: start: ( end: ) input:
(The lines must already be square
so this line that is too short
relative to this end, is illegal)