Et non, ce n'est pas une dupe de Traduire du texte ASCII en braille .
Il y a 2 8 = 256 motifs braille en Unicode. (Par «braille», je veux dire ceux à 8 cellules)
Attends. Combien de caractères ASCII y avait-il?
2 7 = 128?
Eh bien, transformons l'ASCII en braille, car il n'y a absolument aucune raison de ne pas le faire!
Le chemin de l'ASCII au Braille
Nous pouvons voir que chaque cellule représente un peu, chaque cellule étant «perforée» ou non.
Maintenant, nous pouvons allouer chaque cellule pour représenter les bits du caractère ASCII sous forme binaire.
(1 )(16 )
(2 )(32 )
(4 )(64 )
(8 )( - )
* ( - )
est vide
Nous pouvons maintenant convertir ASCII en braille. Par exemple, A
(65 = 01000001) est égal à ⠡
.
Exemples
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
-ce⠱
pas, non⠹
(ce que je penseq
)?a
c'est⠱
.⠹
j'aurais eu tort de toute façon, car il y a le mauvais nombre de cellules perforées.Réponses:
CJam ,
2726 octetsEssayez-le en ligne!
Explication
Les points de code braille sont soigneusement ordonnés afin que les points individuels soient comptés en binaire. Cependant, l'ordre des bits dans les points de code est différent. Nous voulons l'ordre suivant:
Alors que les personnages sont disposés en Unicode dans cet ordre:
(Ce qui est un peu logique, car historiquement, le braille n'utilisait que les six premiers points.) Notez que nous n'avons pas besoin du
7
point, car l'entrée est garantie d'être dans la plage ASCII. Donc, étant donné une liste de bits[6 5 4 3 2 1 0]
d'un caractère d'entrée, nous voulons les réorganiser[3 6 5 4 2 1 0]
, pour tirer le bit représentant le point inférieur gauche à la position la plus significative.la source
80
.JavaScript (ES6), 83 octets
la source
Python 3 ,
987166 octetsEssayez-le en ligne!
la source
CJam , 27 octets
1 octet volé à Neil.
Essayez-le en ligne!
Explication
Cela utilise la même idée de base que mon autre réponse CJam mais utilise l'arithmétique au niveau du bit au lieu de la conversion de base et de la manipulation de liste pour réorganiser les bits.
la source
PHP, 109 octets
Version en ligne
la source
Mathematica 100 octets
Non golfé:
+60 octets de cela liés à des noms de fonction longs.
la source
Gelée , 21 octets
Essayez-le en ligne!
Comment ça marche
la source
Rétine , 59 octets
Essayez-le en ligne! Vidage hexadécimal:
la source
C #, 63 octets
Essayez-le en ligne!
Inspiration de @ovs et @Neil
la source
Chip ,
6259 octetsEssayez-le en ligne!
Je pense que je peux jouer au golf plus, je dois juste comprendre comment ...
La puce lit dans chaque octet d'entrée une collection de bits, référencée par les huit premières lettres de l'alphabet (les majuscules sont entrées, les plus basses sont sorties):
Nous devons simplement mapper ces bits de l'entrée aux trois octets de sortie suivants:
La moitié supérieure du code effectue tout le séquençage et génère les deux premiers octets, la moitié inférieure génère le troisième octet.
Étant donné que la spécification nécessite uniquement la gestion de 7 bits pour ASCII, nous n'examinons pas
H
. Pour inclure le huitième bit, changez la ligneB/b
enB/b/H
.la source