Мистецтво 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)