В этом пиксельном шрифте прописных букв алфавита все символы имеют ширину 5 единиц и высоту 5.
███ ████ ███ ████ █████ █████ ████ █ █ █████ █ █ █ █ █ █
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██ ██
█████ ████ █ █ █ ████ ████ █ ██ █████ █ █ ███ █ █ █ █
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █ ████ ███ ████ █████ █ ████ █ █ █████ ███ █ █ █████ █ █
█ █ ███ ████ ███ ████ ████ █████ █ █ █ █ █ █ █ █ █ █ █████
██ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █ █ █ █ ████ █ █ ████ ███ █ █ █ █ █ █ █ █ █ █ █
█ ██ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █ ███ █ ████ █ █ ████ █ ███ █ █ █ █ █ █ █████
Как видно, между буквами и между строками есть 1 единица пробела. Таким образом, каждая буква может занимать до 6 × 6 единиц пространства.
Предположим, что вместо использования символа full block ( █
) для непосредственного формирования формы букв мы хотели использовать другие буквы того же шрифта . Это включает в себя увеличение размеров текста в 6 раз, чтобы буквы, сделанные из полных блоков, можно было использовать в качестве замены полных блоков в большом тексте.
Если это не имеет смысла, надеюсь, этот пример будет. Вот A, сделанный из B с использованием пиксельного шрифта:
████ ████ ████
█ █ █ █ █ █
████ ████ ████
█ █ █ █ █ █
████ ████ ████
████ ████
█ █ █ █
████ ████
█ █ █ █
████ ████
████ ████ ████ ████ ████
█ █ █ █ █ █ █ █ █ █
████ ████ ████ ████ ████
█ █ █ █ █ █ █ █ █ █
████ ████ ████ ████ ████
████ ████
█ █ █ █
████ ████
█ █ █ █
████ ████
████ ████
█ █ █ █
████ ████
█ █ █ █
████ ████
B сделаны из полных блоков, а A состоит из B. Обратите внимание, что B все еще имеют одну единицу между ними по горизонтали и вертикали.
Мы можем расширить эту идею, используя слова вместо букв. Вот "ВОДА" из "ОГНЯ":
█████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████ ████ █ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █
█████ █████ ████ █████ █████ █████ ████ █████
█ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████
█ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████
█████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████ █████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████ █
█████ █████ ████ █████ █████ █████ ████ █████ █████
█ █ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████ ████
█ █ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████ █
█████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████
Обратите внимание, как «ОГОНЬ» появляется несколько раз в каждой строке и всегда в порядке, независимо от того, сколько места находится между буквами. Три из самых правых экземпляров «ОГНЯ» были отключены рано из-за того, как буквы «ВОДЫ» имеют форму.
Эту идею можно расширить еще больше, используя эти слова из слов, чтобы составить слова из слов, из слов или даже из слов, состоящих из слов, составленных из слов . Там нет предела теоретически.
В другом примере этот пост будет превышать ограничение в 30 тыс. Символов, но вы можете увидеть, что подразумевается под «словами, составленными из слов из слов», запустив этот изящный фрагмент стека. Просто оставьте параметры по умолчанию и нажмите «Go!». Вы должны увидеть слово «СОБАКА» из слова «КОШКА» из слова «МЫШЬ».
Ввод любого разделенного пробелами списка слов, содержащих только заглавные буквы в текстовом поле, приведет к получению первого слова, составленного из второго слова, изготовленного из третьего, изготовленного из четвертого, изготовленного из ... и т. Д.
ПРЕДУПРЕЖДЕНИЕ. Ввод более 4 или даже 3 слов приведет к появлению ОЧЕНЬ большого количества текста и займёт ДОЛГОЕ время. Это может привести к сбою вашего браузера / компьютера / автомобиля.
Вызов
Цель этого задания - отразить действия фрагмента стека с наименьшим количеством символов.
Вы должны написать программу, которая принимает строку слов, разделенных пробелами, содержащую только заглавные буквы, и выводит первое слово, «сделанное из», второе, «сделанное из» третьего и т. Д., Используя приведенный выше пиксельный шрифт.
Флажок «Простой ASCII» и функции размера шрифта фрагмента не должны поддерживаться в вашей программе. Зеркальное отражение преобразования списков слов в слова, составленные из слов, является главным и единственным требованием.
Детали
Входные данные должны поступать из стандартного ввода, командной строки, или вы можете просто написать функцию, которая принимает строку.
Вы можете предположить, что ввод всегда действителен, то есть строка слов, состоящая из заглавных букв, разделенных ровно одним пробелом, без начальных или конечных пробелов.
Вывод должен идти в стандартный вывод (или аналогичную альтернативу) или в файл с именем по вашему выбору.
Вывод должен состоять исключительно из символов пробела , пробела и символов новой строки.
- В пустой / полный пробелы должны быть либо пробел и полный блок (
,
█
) соответственно, или период и Х (.
,X
) соответственно.
- В пустой / полный пробелы должны быть либо пробел и полный блок (
Вывод не должен содержать никаких начальных столбцов, содержащих только символы пробела , хотя допускается любая комбинация конечных символов пробела в любых строках.
Так что это разрешено:
X...X.XXXXX.. X...X.X X.X.X.XXXX.... X.X.X.X.. .X.X..XXXXX..
Но это не так:
.X...X.XXXXX.. .X...X.X .X.X.X.XXXX.... .X.X.X.X.. ..X.X..XXXXX..
Не должно быть начальных или конечных строк, содержащих только символы пробела . Один трейлинг-перевод строки разрешен.
Вот более дружественная к строке версия шрифта:
.XXX.
X...X
XXXXX
X...X
X...X
XXXX.
X...X
XXXX.
X...X
XXXX.
.XXX.
X...X
X....
X...X
.XXX.
XXXX.
X...X
X...X
X...X
XXXX.
XXXXX
X....
XXXX.
X....
XXXXX
XXXXX
X....
XXXX.
X....
X....
.XXXX
X....
X..XX
X...X
.XXXX
X...X
X...X
XXXXX
X...X
X...X
XXXXX
..X..
..X..
..X..
XXXXX
....X
....X
....X
X...X
.XXX.
X...X
X..X.
XXX..
X..X.
X...X
X....
X....
X....
X....
XXXXX
X...X
XX.XX
X.X.X
X...X
X...X
X...X
XX..X
X.X.X
X..XX
X...X
.XXX.
X...X
X...X
X...X
.XXX.
XXXX.
X...X
XXXX.
X....
X....
.XXX.
X...X
X...X
X..XX
.XXXX
XXXX.
X...X
XXXX.
X..X.
X...X
.XXXX
X....
.XXX.
....X
XXXX.
XXXXX
..X..
..X..
..X..
..X..
X...X
X...X
X...X
X...X
.XXX.
X...X
X...X
.X.X.
.X.X.
..X..
X...X
X...X
X.X.X
X.X.X
.X.X.
X...X
.X.X.
..X..
.X.X.
X...X
X...X
.X.X.
..X..
..X..
..X..
XXXXX
...X.
..X..
.X...
XXXXX
счет
Это код-гольф, поэтому выигрывает самое короткое представление в байтах . Любой экземпляр полного block ( █
) может быть посчитан как 1 байт вместо 3, так что использование, которое использует X
, не имеет преимущества.
источник
javascript:
В строке URL и вставить его) , чтобы сделать ASCII искусство здесь много, гораздо легче читать:$('#question pre').css('line-height',1)
. Результат: i.stack.imgur.com/XmB8C.png$('#question pre, .answer pre').css('line-height',1)
Ответы:
CJam,
171 165 162161 байтЯ лечу
█
как 1 байт. Остальные все символы находятся в пределах ASCII-диапазона, поэтому они рассматриваются как 1 байт.Вы можете использовать этот pastebin для точного кода
Пример вывода для ввода:
Как это устроено
Прежде всего
это просто шаблон для каждого из 27 символов (
A-Z
и пробела), который состоит из0
(вX
позициях) и1
(в.
позициях). После декодирования это дает массив из 27 элементов двумерных массивов из 5 строк и 5 столбцов, представляющихX
и.
для каждого из 27 символов. Давайте назовем этот массив какL
.Теперь оставшийся код:
Попробуйте это онлайн здесь
источник
Python 3, 437 байт
Формы символов закодированы в ASCII. Каждый байт ASCII соответствует одной строке одного символа с битами, представляющими единичные блоки. Это не очень эффективная схема, но ее легко распаковать в битовые маски NumPy для каждого символа.
Мы начнем с двухмерного массива 1 с. Он имеет один столбец для каждого символа в первом слове и одну строку. Затем для каждого слова мы создаем новый массив с нулями, который в шесть раз выше и в шесть раз шире предыдущего массива. Если предыдущий массив имел 1, соответствующий раздел 6x6 нового массива заполняется битовой маской соответствующего символа.
Вот пример (с очень маленьким шрифтом):
источник
CJam,
181174170 байтВсе эти не-ASCII-символы все еще находятся в расширенном диапазоне ASCII, поэтому все они могут быть закодированы одним байтом. (За исключением
█
, но этот обрабатывается специально в соответствии со спецификацией вызова.) Поэтому я считаю каждый символ байтом.Stack Exchange, вероятно, исказил некоторые непечатаемые символы, поэтому вам, возможно, придется скопировать код из этой вставки .
Проверьте это здесь.
Принимает ввод через STDIN как разделенный пробелами список слов. Первое слово - самый большой масштаб. Например:
доходность
объяснение
Во-первых, мы храним таблицу поиска для форм букв в
L
:Первая строка просто сжатое число. Мы рассматриваем кодовые точки как базовые 257 цифр, а затем конвертируем полученное число в двоичное.
YYb
2 находится в базе 2, так что дает[1 0]
. Мы используем замену элементов с," █"
чтобы превратить цифры в пробелы и блокировать символы. Наконец, мы разбиваем строку на строки по 5 символов и снова на блоки по 5 строк. Результат сохраняетсяL
и удаляется из стека.Теперь общая идея состоит в том, чтобы начать с одной строки
█
длины слова самого большого масштаба. И затем для каждого слова мы проходим через существующую сетку и расширяем все блоки до соответствующего символа в следующем меньшем масштабе (вставляя пустые строки и столбцы для разделения). Вот входная подготовка:Давайте сначала посмотрим на внешнюю структуру оставшейся программы. Следующий блок
{...}/
запускается для каждого слова и расширяет каждый из символов блока.Наконец, давайте посмотрим, как раскрывается одна строка:
Результат распечатывается автоматически в конце программы.
источник