Иногда, когда мне скучно, я беру текст и заполняю «дыры» в письмах. Но разве заполнение дыр не самая скучная вещь, которую вы можете сделать? Я думаю, что мы должны автоматизировать это , чтобы мы могли лучше использовать наше время.
Применяются стандартные правила игры в гольф .
вход
Строка, содержащая последовательность буквенно-цифровых символов (az, AZ, 0-9) и пробелов.
Выход
Изображение, содержащее визуализированную строку и заполненные отверстия. Вы можете использовать любой читаемый человеком шрифт, если он все еще требует заполнения отверстий. Вы можете сохранить изображение в файл i.png
(в формате png) или просто отобразить изображение.
Свойства изображения:
- Черный текст
- Белый или прозрачный фон
- Обивка:
- Размеры изображения могут быть в два раза больше размеров текста.
- Обивка должна быть того же цвета, что и фон, белая или прозрачная
пример
Входные данные: Example text
code-golf
graphical-output
image-processing
Ханнес Карппила
источник
источник
Ответы:
Баш, 135 байт
Использует ImageMagick (
convert
).Пример вывода:
Отключение сглаживания необходимо, потому что иначе сглаженные внутренние части букв не будут заполнены заливкой. Установка шрифта большого размера также требуется, потому что некоторые шрифты имеют «пробелы» в буквах, которые должны иметь «дыры» в них при малых размерах шрифта (в моих тестах
a
не было заполнено при шрифте по умолчанию для маленького размера шрифта).источник
Mathematica, 83 байта
Безымянная функция, которая принимает строку в качестве входных данных и возвращает объект изображения. Идея заключается в том , чтобы использовать ,
DeleteBorderComponents
чтобы держать только отверстие , а затем вычесть те из исходного изображения.источник
ImageSubtract
иDeleteBorderComponents
.SmileBASIC, 38 байт
Рисует черный * текст на черном фоне, затем использует встроенную функцию «заливка», чтобы заполнить все, что находится за пределами текста белым.
* (на самом деле я использовал
00000008
, который выглядит идентично прозрачному, но рассматривается как другой цвет)источник
Немного пожирает текст, но есть и решение на основе холста:
JS, 610 байт
источник
Постскриптум 273
[Первоначально был связан с соответствующей проблемой , но я никогда не использовал подсчет.]
Отрисовывает каждый символ в обычном порядке, чтобы получить правильный интервал для продвижения, затем берет все кривые, которые описывают глиф, и заполняет каждый из них. Обычно внутренние и внешние кривые описываются в разных ориентациях, поэтому при заполнении внутреннее пространство остается пустым, независимо от того, использует ли оно правило ненулевого наматывания или четно-нечетное правило. Заполнение отдельно, все это заполняется.
Отступ:
Использование. Ожидается, что строковый объект будет в стеке при запуске программы. Дополнительное масштабирование, чтобы сделать его видимым.
источник