Напишите программу, которая переводит текст ASCII в вывод Брайля . Требования:
- Входные данные могут поступать из стандартного ввода, командной строки или другого внешнего источника ввода.
- Вывод должен быть распознан как шрифт Брайля, форма вывода зависит от вас. Примером может служить
o
выпуклая точка и.
невыпуклая точка. Текстовое представление шаблона, например,1-3-4
не приемлемо. Перенос строки не требуется. - Для минимального решения требуются только 26 букв алфавита и пробел. Все входные символы, не поддерживаемые вашим решением, должны игнорироваться.
Оценка по количеству символов в исходном коде. Штрафы и бонусы:
- +50 штрафов за использование символов Брайля Unicode в качестве вывода.
- -50 бонус за поддержку столиц, цифр и знаков препинания.
-200 бонус за поддержку лигатур и однобуквенных сокращений от английского (класс 2) Брайля .(Будет сделать это отдельной проблемой, так как это совсем другая проблема.)
Пример вызова и вывода (минимальное решение):
$ braille Hello world
o . o . o . o . o . . . . o o . o . o . o o
o o . o o . o . . o . . o o . o o o o . . o
. . . . o . o . o . . . . o o . o . o . . .
Ответы:
Питон, 162
В настоящее время поддерживает строчные буквы и некоторые знаки препинания, но это все еще в стадии разработки.
Пример:
источник
Питон -
9075 + 50 = 125Используйте строчные буквы.
Однострочник (спасибо ɐɔıʇǝɥʇuʎs)
источник
for l in input():print("⠀⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵"[max(0,ord(l)-96)],end="")
75 символов.max
трюке. Спасибоfor l in input():print((" "*97+"⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵")[ord(l)],end="")
С 269
Эта реализация требует, чтобы ее аргумент, если он содержит пробелы, был заключен в кавычки:
источник
BBC Basic 103 символа ASCII или 92 токена
Возможно, не совсем то, что предполагал OP, это переопределяет шрифт для строчных букв.
VDU 23,n,a,b,c,d,e,f,g,h
назначает растровое изображение 8x8 на символ n, состоящий из восьми байтов. Если после параметра указать точку с запятой вместо запятой, он будет рассматриваться как двухбайтовое число с прямым порядком байтов.Брайлевские шаблоны для писем
a
черезz
которые хранятся в A $, в соответствии со следующей схемой передачи данных. Это извлекается масками с 9 = двоичным1001
и правыми сдвигами (деление на 2 и 4 используется в качестве стандартного базового BBC не имеет оператора сдвига.)Код без правил
Пример использования
Это сделано в режиме экрана 6 для ясности (наберите MODE6, как только вы откроете эмулятор командной строки.)
На самом деле, после запуска кода любые буквы в нижнем регистре (включая ввод с клавиатуры) появляются в шрифте Брайля.
Эмулятор на http://bbcbasic.co.uk/bbcwin/bbcwin.html .
Смотрите также мой аналогичный ответ: /codegolf//a/28869/15599
источник
Bash + coreutils
Минимальное решение - только строчные, 83 (33 символа Юникод + 50 штрафов):
Столицы, цифры и знаки препинания, 120 (120 символов Юникода + 50 штрафов - 50 бонусов):
Пример вывода:
источник
PHP, 331
На данный момент бонусов нет.
источник
<?
вместо того,<?php[SPACE]
чтобы сохранять 4 символа.JavaScript - 286
Первая попытка. Нет бонусов.
источник
w=prompt().split("");for(i=0;i<w.length;i++)z=w[i],o="o",p=".",b=[1,5,3,11,9,7,15,13,6,14],e=[c="",1,3],g=z.charCodeAt(0)-97,22<g&&g--,f=e[g/10|0],d=b[g%10],22==g&&(d=14,f=2),c+=d&1?o:p,c+=d&2?o:p,c+="\n",c+=d&4?o:p,c+=d&8?o:p,c+="\n",c+=f&1?o:p,c+=f&2?"o\n":".\n",console.log(c)
CJam - 51
Попробуйте это на http://cjam.aditsu.net/
Пример ввода:
Пример вывода:
Он поддерживает только строчные буквы и пробел. Другие символы отображаются на поддерживаемые символы (в частности, заглавные буквы в строчные).
Объяснение:
Символы Брайля кодируются с использованием 1 для выпуклой точки и 0 для невыполненной точки, слева направо и сверху вниз. Это дает 6 цифр основания-2; 1 добавляется перед тем, чтобы избежать удаления начальных нулей, затем число преобразуется в основание 10, а затем в соответствующий символ ASCII.
Пример: t -> ⠞ -> 01/11/10 -> 1011110 -> 94 -> ^
Программа преобразует обратно каждый символ в триплет пар битов (например,
[[0 1][1 1][1 0]]
), получая матрицу пар битов. Затем матрица транспонируется и добавляются разделители (пробелы в строках, новые строки между строками).q
читает входные данные в строку = массив символов{…}%
применяет блок к каждому символуi32%
получает код ASCII mod 32 (пробел-> 0, a-> 1, b-> 2, z-> 26)"@`hptdx|lX\bjrvfz~nZ^ck]swg"
- строка, содержащая символы Брайля кодируется, как описано выше,=
получает соответствующий закодированный символ Брайля из строки,i2b
получает код ASCII, затем преобразует в основание 2 (получает массив из 7 цифр),1>
удаляет первую цифру 1,2/
разбивает массив на (3) пары,z
транспонирует матрицу,Sf*
объединяет каждую строку с пробелыN*
соединяют строки с символами новой строкиисточник
С
249244Ввод - это аргумент командной строки, который должен быть экранирован или заключен в кавычки, если строка содержит пробелы. Поддерживаемые символы - строчные буквы и пробел. Неподдерживаемые символы молча удаляются.
Изменить: побрить 5 байтов, упрощая условие
источник
perl, 195 + 2-50 = 147
Это обрабатывает капитал, число и пунктуацию, не полагаясь на юникод (195 байтов + 2 байта (для
-pl
) - 50 бонусов)С отступом:
Образец вывода
источник
Javascript ES6 -
282309297283270 - 50 =232259233220 байтЭто будет короче, но проверка на заглавные буквы больно .
РЕДАКТИРОВАТЬ: Спасибо mbomb007 за то, что сэкономил мне два байта - к сожалению, я обнаружил, что немного предыдущих игр в гольф испортило все, поэтому мне пришлось добавить 27 символов обратно.
РЕДАКТИРОВАТЬ: Aa и 12 байтов сохранены путем перемещения пробелов.
РЕДАКТИРОВАТЬ: понял, что было бы глупо выводить в виде символов, и сэкономил немало байтов. Я также сохранил несколько символов, поменяв местами k = (a, b) => a% (2 * b)> b-1? 1: 0 для k = (a, b) => a% b> ~ -b / 2 1: 0.
источник
string.toLowerCase
переменной?1-9-->a-i
и0-->j