Y no, este no es un engaño de Traducir texto ASCII a braille .
Hay 2 8 = 256 patrones Braille en Unicode. (Por 'Braille' me refiero a las de 8 celdas)
W, espera. ¿Cuántos caracteres ASCII había?
2 7 = 128?
Bueno, entonces, ¡convirtamos ASCII en Braille, porque no hay absolutamente ninguna razón para no hacerlo!
El camino de ASCII a Braille
Podemos ver que cada celda representa un bit, que cada celda está 'perforada' o no.
Ahora podemos asignar cada celda para representar los bits del carácter ASCII como binarios.
(1 )(16 )
(2 )(32 )
(4 )(64 )
(8 )( - )
* ( - )
está en blanco
Ahora podemos convertir ASCII a Braille. Por ejemplo, A
(65 = 01000001) es igual a ⠡
.
Ejemplos
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
es⠱
, no⠹
(que creo que esq
)?a
es⠱
.⠹
habría estado equivocado de cualquier manera, ya que tiene el número incorrecto de celdas perforadas.Respuestas:
CJam ,
2726 bytesPruébalo en línea!
Explicación
Los puntos del código Braille están ordenados para que los puntos individuales cuenten en binario. Sin embargo, el orden de los bits en los puntos de código es diferente. Queremos el siguiente orden:
Mientras que los caracteres se presentan en Unicode en este orden:
(Lo cual tiene sentido, porque históricamente, Braille solo usó los primeros seis puntos). Tenga en cuenta que no necesitamos el
7
punto, ya que la entrada está garantizada en el rango ASCII. Entonces, dada una lista de bits[6 5 4 3 2 1 0]
de un carácter de entrada, queremos reordenarlos[3 6 5 4 2 1 0]
, para extraer el bit que representa el punto inferior izquierdo a la posición más significativa.fuente
80
.JavaScript (ES6), 83 bytes
fuente
Python 3 ,
987166 bytesPruébalo en línea!
fuente
CJam , 27 bytes
1 byte robado de Neil.
Pruébalo en línea!
Explicación
Esto usa la misma idea básica que mi otra respuesta de CJam pero usa aritmética bit a bit en lugar de la conversión de base y la manipulación de listas para reordenar los bits.
fuente
PHP, 109 bytes
Versión en línea
fuente
Mathematica 100 Bytes
Sin golf:
+60 bytes de esto atados en nombres de funciones largos.
fuente
Jalea , 21 bytes
Pruébalo en línea!
Cómo funciona
fuente
Retina , 59 bytes
Pruébalo en línea! Volcado hexadecimal:
fuente
C #, 63 bytes
Pruébalo en línea!
Inspiración de @ovs y @Neil
fuente
Viruta ,
6259 bytesPruébalo en línea!
Sospecho que puedo jugar más al golf, solo tengo que descubrir cómo ...
El chip lee en cada byte de entrada como una colección de bits, a los que se refieren las primeras ocho letras del alfabeto (mayúscula es entrada, menor es salida):
Simplemente necesitamos asignar esos bits de la entrada a los siguientes tres bytes de salida:
La mitad superior del código está haciendo toda la secuencia, y genera los primeros dos bytes, la mitad inferior genera el tercer byte.
Como la especificación solo requiere el manejo de 7 bits para ASCII, no lo examinamos
H
. Para incluir el octavo bit, cambie la líneaB/b
aB/b/H
.fuente