И нет, это не просто перевод текста ASCII на шрифт Брайля .
В Unicode есть 2 8 = 256 образцов Брайля . (Под шрифтом Брайля я подразумеваю 8-элементные)
Ж, подожди. Сколько было символов ASCII?
2 7 = 128?
Что ж, давайте превратим ASCII в шрифт Брайля, потому что нет абсолютно никаких причин не делать этого!
Путь от ASCII до Брайля
Мы можем видеть, что каждая ячейка представляет бит, который каждая ячейка «перфорирована» или нет.
Теперь мы можем выделить каждую ячейку для представления битов символа ASCII в двоичном виде.
(1 )(16 )
(2 )(32 )
(4 )(64 )
(8 )( - )
* ( - )
пусто
Теперь мы можем конвертировать ASCII в шрифт Брайля. Например, A
(65 = 01000001) равно ⠡
.
Примеры
Input -> Output
Braille! -> ⠢⠺⠱⡱⡴⡴⠵⠑
(Upscaled)
.. .o o. o. .. .. o. o.
o. oo .o .o .o .o .o .o
.o .o .o .o oo oo oo ..
.. .. .. o. o. o. .. ..
a
это⠱
не⠹
(я думаю , что этоq
)?a
есть⠱
.⠹
в любом случае это было бы неправильно, так как у него неправильное количество перфорированных ячеек.Ответы:
CJam ,
2726 байтовПопробуйте онлайн!
объяснение
Кодовые точки Брайля аккуратно упорядочены, так что отдельные точки подсчитываются в двоичном виде. Однако порядок битов в кодовых точках отличается. Мы хотим следующий заказ:
Принимая во внимание, что символы расположены в Unicode в следующем порядке:
(Что в некотором роде имеет смысл, потому что исторически Брайль использовал только первые шесть точек.) Обратите внимание, что нам не нужна
7
точка, поскольку входные данные гарантированно находятся в диапазоне ASCII. Поэтому, учитывая список битов[6 5 4 3 2 1 0]
входного символа, мы хотим изменить их порядок[3 6 5 4 2 1 0]
, чтобы бит, представляющий нижнюю левую точку, занял самую значимую позицию.источник
80
.JavaScript (ES6), 83 байта
источник
Python 3 ,
987166 байтПопробуйте онлайн!
источник
CJam , 27 байт
1 байт украден у Нейла.
Попробуйте онлайн!
объяснение
Здесь используется та же основная идея, что и в моем другом ответе CJam, но используется побитовая арифметика вместо преобразования базы и манипулирования списком для переупорядочения битов.
источник
PHP, 109 байт
Онлайн версия
источник
Mathematica 100 байт
Ungolfed:
+60 байт это связано с длинными именами функций.
источник
Желе , 21 байт
Попробуйте онлайн!
Как это работает
источник
Сетчатка , 59 байт
Попробуйте онлайн! Шестнадцатеричный дамп:
источник
C #, 63 байта
Попробуйте онлайн!
Вдохновение от @ovs и @Neil
источник
Чип ,
6259 байтПопробуйте онлайн!
Я подозреваю, что я могу играть в гольф больше, просто должен выяснить, как ...
Чип читает каждый входной байт как набор битов, обозначаемых первыми восемью буквами алфавита (верхний регистр - ввод, нижний - вывод):
Нам просто нужно отобразить эти биты ввода в следующие три байта вывода:
Верхняя половина кода выполняет все последовательности и генерирует первые два байта, нижняя половина генерирует третий байт.
Поскольку спецификация требует обработки только 7 битов для ASCII, мы не рассматриваем
H
. Чтобы включить восьмой бит, измените строкуB/b
наB/b/H
.источник