ASCII искусство это весело. Современные текстовые редакторы очень хорошо умеют манипулировать текстом. Современные языки программирования соответствуют задаче?
Одной из распространенных задач в ASCII-манипуляции с искусством является обрезка текста в прямоугольник между двумя символами. Это задача, которую вы должны выполнить в этой задаче.
Детали
Ваша программа будет принимать 3 входа:
- первый - это начальный символ блока, отмечающий левый верхний угол
- вторая - это символ конца блока, отмечающий правый нижний угол
- третья - это некая форма многострочного текста, либо строка, либо список строк, либо имя файла, либо что угодно
Результатом будет многострочный текст (опять же, в любом из вышеуказанных форматов), обрезанный до прямоугольника между заданными входами. Обратите внимание, что первые два входа могут быть не уникальными.
Краевые случаи
Коробки всегда должны иметь объем не менее 2. Таким образом, они:
() (
)
это коробки, но они:
)( ) (
( )
нет (с начала = (
и конца = )
).
Вход будет содержать только один блок. Таким образом, начальный и конечный символы должны встречаться только один раз, если только они не являются одним и тем же символом; в этом случае они должны встречаться ровно дважды.
Кроме того, каждая строка на входе должна быть не меньше длины начала строки до правого края поля на входе.
Ваша программа не должна обрабатывать неверные данные; они могут привести к неопределенному поведению.
правила
Применяются типичные правила игры в гольф. Самый короткий код выигрывает.
Примеры
Солнечный день: start: ( end: ) input:
This is some text
. (but this text
is in a box ).
So only it is important.
Выход:
(but this text
is in a box )
Обратите внимание на зачистку горизонтального пространства. ASCII художественные культуры 2d.
Дождливый день: start: ( end: ) input:
This is some text (
But is that even )
really a box?
Выход:
(
)
То же начало / конец: start: / end: / input:
Oh, I get how this could be useful
/----------------------------\
| All this text is in a box! |
\----------------------------/
Выход:
/----------------------------\
| All this text is in a box! |
\----------------------------/
Неверный Ввод: start: ( end: ) input:
Boxes are rectangular ( so this has
0 volume ) which is illegal.
Неверный ввод 2: start: ( end: ) input:
(The lines must already be square
so this line that is too short
relative to this end, is illegal)