Введение
Я думаю, что все согласны с тем, что красивые картинки должны иметь красивую рамку. Но большинство задач на этом сайте об ASCII-Art просто хотят получить необработанную картинку и не заботятся о ее сохранности.
Разве не было бы неплохо, если бы у нас была программа, которая использует ASCII-Art и окружает ее красивой рамкой?
Соревнование
Напишите программу, которая принимает ASCII-Art в качестве входных данных и выводит их в красивой рамке.
Пример:
***** *** * *** *****
становится
╔═══════╗ ║ ***** ║ ║ *** ║ ║ * ║ ║ *** ║ ║ ***** ║ ╚═══════╝
- Вы должны использовать те же символы для кадра, что и в примере:
═ ║ ╔ ╗ ╚ ╝
- Верх и низ кадра вставляются перед первой и после последней строки ввода.
- Левая и правая части кадра должны иметь ровно один пробел к самой широкой строке ввода.
- В выводе могут отсутствовать начальные или конечные пробелы. Разрешается только завершающий перевод строки.
- Вы можете предположить, что у ввода нет лишних начальных пробелов.
- Вы можете предположить, что входные данные не имеют конечных пробелов ни в одной строке.
- Вам не нужно обрабатывать пустой ввод.
- Входные данные будут содержать только печатные символы ASCII и символы новой строки.
правила
- Функция или полная программа разрешены.
- Правила по умолчанию для ввода / вывода.
- Применяются стандартные лазейки .
- Это код-гольф , поэтому выигрывает меньшее количество байт. Tiebreaker является более ранним представлением.
Удачного кодирования!
Использование какого-то замечательного ASCII-Art, созданного в любой задаче на этом сайте, очень приветствуется как вклад в вашу программу и ее демонстрацию в красивой рамке!
#
четырех раз. Адаптировать такой подход здесь будет в лучшем случае сложно. и не жизнеспособна в худшем случае.)Ответы:
CJam, 45 символов / 52 байта
Попытка избежать тех дорогих 3-байтовых символов была ... интересной.
Попробуйте онлайн
объяснение
источник
Haskell, 139 байт
В качестве примера я подставляю снеговика "12333321" .
Как это работает:
источник
JavaScript (ES6), 138 байт
Это 138 байт в кодировке IBM866, которая на момент написания все еще поддерживается в Firefox, но 152 в UTF-8.
источник
Bash,
173171150148147 байт,157136134133 символовMultiline:
Пример выполнения:
Пример запуска из скрипта:
источник
...?${#2}+2:n))
вместо этого+1
пропустить 2 пробела иprintf -v z %${n}s;
вместоprintf -v z " %*.s" $n
.AWK, 159 байт
Очевидно,
awk
можно распечатать Unicode, если вы можете выяснить, как получить его в коде.источник
Perl, 111 символов
(оценка включает +5 для флагов переводчика)
Во-первых, мы находим наибольшую длину строки
$n
, численно сортируя длины всех линий.Мы устанавливаем
$l
в качестве заголовка / нижнего колонтитула$n
повторения символа горизонтальной рамки.Затем мы печатаем каждую строку, отформатированную для выравнивания по левому краю, в поле ширины
$n
, расположенном между символами рамки.Результат:
источник
Pyth, 44 символа (58 байт)
объяснение
Попробуй это здесь.
источник
PHP 5.3, 209 байт
Это работает только с использованием кодировки OEM 860 . Это расширенный набор ASCII, используемый в португальских версиях DOS. Так как я португалец (и я любил делать эти «кадры» в Паскале), и это стандартная кодировка, я продолжил:
Вот base64:
Этот ответ был основан на моем ответе по адресу : https://codegolf.stackexchange.com/a/57883/14732 (там был сделан тяжелый подъем, просто пришлось немного дергаться).
источник
22+58+11+5+11+24+66+12=209
Последние 12 - это новые строки и, как и DOS, означают CRLF, или два байта на новую строку. Сайт персонажа не учитывает новые строки. Каждый из не-ASCII глифов составляет 1 байт в OEM 860.\n
в\r\n
, при открытии файла в ASCII / текстовом режиме.Python 3, 119 байт
126 байтВходные данные:Выход:
источник
print"╔"+h+"╗\n"+"".join(o)+"╚"+h+"╝"
.def f(x):
n='\n';s="║ ";e=" ║";h=(x.find(n)+2)*"═";return"╔"+h+"╗"+n+s+x.replace(n,e+n+s)+e+n+"╚"+h+"╝"
<s>...</s>
). Также вы можете добавить<!-- language-all: lang-python -->
перед вашим блоком кода, чтобы добавить подсветку синтаксиса в ваш код.Python 2, 115 байт
Здесь он выглядит короче 115, но рабочий файл содержит 3-байтовую подпись метки спецификации UTF-8, увеличивая ее до 115 байт. Если бы вы запустили его в Python 3, вам бы не понадобилась спецификация, и она сократилась бы до 112 байт.
источник
sed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' codeGolf.py
C, 290 байтов
Гольф-функция
B
, с зависимостями; принимает ввод как символ с нулевым символом в конце *Несколько незакрытая функция в полной программе
вход
выход
C советы по игре в гольф приветствуются!
источник