Когда я пишу документацию, комментарии и т. Д., Я люблю создавать таблицы ASCII. Обычно они выглядят довольно неплохо, но я всегда чувствую, что они могут выглядеть еще лучше, особенно с учетом того, что UTF-8 / Unicode содержит символы рисования прямоугольников . Однако эти символы очень обременительны в использовании, для их вставки требуется несколько нажатий клавиш. Твое задание? Напишите программу или функцию, которая может автоматически преобразовывать таблицы ASCII в эквивалент UTF-8 / Unicode.
Этот вызов был изолирован .
Вызов
Напишите программу, в которой в качестве входной строки задана таблица ASCII, и таблица будет перерисована с использованием символов рисования блока Unicode / UTF-8. В частности, символы, которые являются частью таблицы, должны быть переведены следующим образом:
(Unicode, 3 bytes each in UTF-8)
- to ─ (\u2500)
| to │ (\u2502)
= to ═ (\u2550)
and + to one of:
┌ (\u250C), ┐ (\u2510), └ (\u2514), ┘ (\u2518),
├ (\u251C), ┤ (\u2524), ┬ (\u252C), ┴ (\u2534),
┼ (\u253C)
or, if '=' on either side:
╒ (\u2552), ╕ (\u2555), ╘ (\u2558), ╛ (\u255D),
╞ (\u255E), ╡ (\u2561), ╤ (\u2564), ╧ (\u2567),
╪ (\u256A)
Детали
I / O:
- Ввод / вывод по умолчанию разрешен
- Вы можете принимать данные в любом приемлемом формате, включая таблицу в виде строки или путь к файлу, содержащему таблицу.
- Вы можете вывести в файл и принять имя файла в качестве дополнительного аргумента.
- Однако вы не можете изменять входной файл . (Следует сохранить для удобства редактирования в будущем)
Входные данные:
- Вы можете предположить, что каждая строка ввода дополнена до одинаковой длины
.
- Вы не можете предполагать, что первый символ после новой строки является частью границ таблицы (так как это может быть пробел).
- Ввод считается действительной таблицей, если все символы (которые являются частью таблицы)
-=|
связаны ровно с двумя символами и+
связаны как минимум с одним символом как по горизонтали, так и по вертикали. - Ваша программа может не выдавать ошибок с допустимыми данными.
- Если ввод недопустим, поведение не определено, и вы можете произвести любой вывод.
- Входные данные могут содержать любые символы UTF-8, включая символы рисования блоков.
Выход:
- Любой из символов
-=|+
, которые не являются частью таблицы, должен быть оставлен как есть. - Точно так же любые другие символы должны быть оставлены как есть.
- Разрешается использовать только один начальный и / или завершающий символ новой строки.
Другой:
- Стандартные лазейки запрещены, как обычно.
- Если у вашего предпочтительного языка есть встроенный модуль, который решает эту проблему, вы не можете его использовать.
- Это означает, программы, функции, подпрограммы или инструкции, которые были бы действительными представлениями для этой задачи без дополнений.
- Каждый из символов, необходимых в этой задаче, имеет длину три байта, когда они закодированы в UTF-8.
Связанные персонажи :
Персонаж связан с другим, если:
- Это
|
и есть прямо над или под+
или|
; - Это
-
и есть непосредственно до или после+
или-
; - Это
=
и есть непосредственно до или после+
или=
; - Он находится
+
и находится непосредственно над или под|
или+
, или непосредственно перед, или после-
,=
или+
.
Символ считается частью таблицы, если он связан с любым символом, который является частью таблицы. По определению, первая +
во входных данных является частью таблицы.
Примеры
Примеры доступны здесь в виде копируемой версии.
Input: Output:
+------------------+ ┌──────────────────┐
| Hello+World! | │ Hello+World! │
+==================+ ╞══════════════════╡
| This is+my first | -> │ This is+my first │
|+-+ code|golf +-+| │+-+ code|golf +-+│
|+-+chall|enge! +-+| │+-+chall|enge! +-+│
+------------------+ └──────────────────┘
+===+===+===+ ╒═══╤═══╤═══╕
| 1 | 2 | 3 | │ 1 │ 2 │ 3 │
+---+===+===+===+ ┌───╪═══╪═══╪═══╡
| 1 | 1 | 2 | 3 | │ 1 │ 1 │ 2 │ 3 │
+---+---+---+---+ -> ├───┼───┼───┼───┤
| 2 | 2 | 4 | 6 | │ 2 │ 2 │ 4 │ 6 │
+---+---+---+---+ ├───┼───┼───┼───┤
|-3 |-3 |-6 |-9 | │-3 │-3 │-6 │-9 │
+===+---+---+---+ ╘═══╧───┴───┴───┘
+-----+ -> <Undefined>
+-----+ -> ┌─────┐
+-----+ └─────┘
+-----------------+
| Hello, World! |
| This is invalid | -> <Undefined>
| input |
-----------------+
++++ ┌┬┬┐
++++ -> ├┼┼┤
++++ └┴┴┘
+--+
++++ -> <Undefined>
+--+
В заключение...
Это код-гольф , поэтому выигрывает наименьшее количество байтов. Удачного игры в гольф!
Hello World
таблицу, внутренние таблицы не считаются образующими таблицу, потому что текст внутри таблицы должен оставаться неизменным, и они не считаются частью границ внешней таблицы, поскольку они не связаны с ними должным образом.
+----+
пример, это будет потому, что направление углов будет неоднозначным.
+-+
выдержки не считаются связанными таблицами?