Учитывая строку, которая может быть в штучной упаковке, переключите флажок. Это становится понятнее в тестовых примерах и объяснениях.
Ввод, вывод
Формат ввода
Входными данными будут либо одна строка, разделенная CR, LF или CRLF, либо список строк. Формат ввода зависит от вас, чтобы решить.
Выходной формат
Выходной формат должен быть в том же формате, что и входной.
Объяснение + Пример
Давайте возьмем коробочную строку в качестве примера:
+-------------+
|Hello, World!|
+-------------+
Чтобы переключить флажок, мы удаляем первую и последнюю строку и первый и последний столбец. Вы можете предположить, что после последней строки не будет завершающих пробелов (с необязательным завершающим символом новой строки в конце последней строки), а также нет пробельных символов в какой-либо строке, не считая новой строки, конечно.
Это станет:
Hello, World!
Другой способ
Если строка отсутствует в поле, добавьте в нее поле. Это довольно просто; добавьте +---...---+
к отдельной строке с k
пунктирными линиями где k
длина самой длинной строки, а затем для каждой строки добавьте в конце пробел, чтобы соответствовать длине самой длинной строки, а затем добавьте и добавьте символ конвейера ( "|"
). Наконец, добавьте строку, содержащую ту же +---...---+
настройку, что и первая строка.
Например:
Hello, World!
будет выглядеть так:
+-------------+
|Hello, World!|
+-------------+
Вы можете предположить, что ни одна из строк во входных данных не будет содержать пробелы в конце.
Еще один пример строки, в которую нужно поместить рамку:
Hello,
World!
становится
+----------+
|Hello, |
| World!|
+----------+
Пример чего-то, что все еще должно быть в штучной упаковке:
+--------+
| |
--------+
будет выглядеть так:
+----------+
|+--------+|
|| ||
| --------+|
+----------+
Правила + Технические характеристики
- Применяются стандартные лазейки
- Ни одна строка ввода не будет иметь начальных или конечных пробелов как в целом, так и в каждой строке, независимо от того, было ли оно помещено в рамку.
- Коробки будут иметь
+
как свои углы, так и|
вертикальные края и-
горизонтальные стороны. - Коробка должна иметь свои плюсы, чтобы считаться коробкой; если он имеет высоту или ширину 2 (то есть без содержимого), он все равно должен быть распакован, что приведет к куче новых строк в зависимости от высоты поля.
- Если у ввода есть поле, но текст за пределами поля, все это должно быть упаковано.
- Ваша программа должна проверять весь периметр строки. Если один символ снаружи не является правильным (либо отсутствует, либо отличается от того, который должен быть), то он должен быть в штучной упаковке, а не в штучной упаковке.
- Сама распакованная строка может содержать
+ | -
. Если у самой неупакованной строки есть рамка, верните строку с этим полем; он должен быть распакован только один раз.
Краевые Чехлы
1: Маленькие коробки
Входные данные:
++
++
Вывод пустой или перевод строки
Входные данные:
+----+
+----+
Вывод пуст или перевод строки
Входные данные:
++
||
||
++
Вывод 2 новых или 3 новых строки
2: Частичная коробка
Входные данные:
+-------+
| Hello |
+ ------+
Вывод:
+---------+
|+-------+|
|| Hello ||
|+ ------+|
+---------+
3: текст за пределами поля
Входные данные:
+-------+
a| Hello |
+-------+
Вывод:
+----------+
| +-------+|
|a| Hello ||
| +-------+|
+----------+