E não, isso não é uma brincadeira de traduzir texto ASCII para braille .
Existem 2 8 = 256 padrões Braille em Unicode. (Por 'Braille' quero dizer células de 8 células)
W, espera. Quantos caracteres ASCII havia?
2 7 = 128?
Bem, então, vamos transformar ASCII em Braille, porque não há absolutamente nenhuma razão para não!
O caminho de ASCII, para Braille
Podemos ver que cada célula representa um pouco, e cada célula é 'perfurada' ou não.
Agora podemos alocar cada célula para representar os bits do caractere ASCII como binários.
(1 )(16 )
(2 )(32 )
(4 )(64 )
(8 )( - )
* ( - )
está em branco
Agora podemos converter ASCII para Braille. Por exemplo, A
(65 = 01000001) é igual a ⠡
.
Exemplos
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
é⠱
, não⠹
(que eu acho que éq
)?a
é⠱
.⠹
estaria errado de qualquer maneira, já que tem o número errado de células perfuradas.Respostas:
CJam ,
2726 bytesExperimente online!
Explicação
Os pontos do código Braille são ordenados ordenadamente para que os pontos individuais sejam contados em binário. No entanto, a ordem dos bits nos pontos de código é diferente. Queremos a seguinte ordem:
Enquanto os caracteres estão dispostos em Unicode nesta ordem:
(O que meio que faz sentido, porque historicamente, o Braille usou apenas os seis primeiros pontos.) Observe que não precisamos do
7
ponto, pois a entrada é garantida como estando na faixa ASCII. Portanto, dada uma lista de bits[6 5 4 3 2 1 0]
de um caractere de entrada, queremos reordená-los para[3 6 5 4 2 1 0]
que o bit que representa o ponto inferior esquerdo seja colocado na posição mais significativa.fonte
80
.JavaScript (ES6), 83 bytes
fonte
Python 3 ,
987166 bytesExperimente online!
fonte
CJam , 27 bytes
1 byte roubado de Neil.
Experimente online!
Explicação
Isso usa a mesma idéia básica da minha outra resposta CJam, mas usa aritmética bit a bit em vez de conversão de base e manipulação de lista para reordenar os bits.
fonte
PHP, 109 bytes
Versão Online
fonte
Mathematica 100 Bytes
Ungolfed:
+60 bytes deste empatado em nomes de funções longos.
fonte
Gelatina , 21 bytes
Experimente online!
Como funciona
fonte
Retina , 59 bytes
Experimente online! Despejo hexagonal:
fonte
C #, 63 bytes
Experimente online!
Inspiração de @ovs e @Neil
fonte
Chip ,
6259 bytesExperimente online!
Eu suspeito que posso jogar mais, só preciso descobrir como ...
O chip lê cada byte de entrada como uma coleção de bits, referida pelas oito primeiras letras do alfabeto (maiúsculas são inseridas, menor é saída):
Simplesmente precisamos mapear esses bits da entrada para os três bytes a seguir de saída:
A metade superior do código está fazendo todo o seqüenciamento e gera os dois primeiros bytes, a metade inferior gera o terceiro byte.
Como a especificação requer apenas 7 bits para ASCII, não examinamos
H
. Para incluir o oitavo bit, altere a linhaB/b
paraB/b/H
.fonte