Und nein, dies ist keine Kopie von ASCII-Text in Blindenschrift übersetzen .
In Unicode gibt es 2 8 = 256 Braillemuster . (Mit "Blindenschrift" meine ich 8-Zellen)
W, warte. Wie viele ASCII-Zeichen gab es?
2 7 = 128 & le;
Nun, lassen Sie uns ASCII in Blindenschrift umwandeln, denn es gibt absolut keinen Grund, dies nicht zu tun!
Der Weg von ASCII nach Braille
Wir können sehen, dass jede Zelle ein Bit darstellt, welches jede Zelle "gelocht" ist oder nicht.
Jetzt können wir jede Zelle zuweisen, um die Bits des ASCII-Zeichens als binär darzustellen.
(1 )(16 )
(2 )(32 )
(4 )(64 )
(8 )( - )
* ( - )
ist leer
Jetzt können wir ASCII nach Braille konvertieren. Zum Beispiel ist A
(65 = 01000001) gleich ⠡
.
Beispiele
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
ist⠱
, nicht⠹
(was ich denke istq
)?a
ist⠱
.⠹
wäre in beiden Fällen falsch gewesen, da die Anzahl der gelochten Zellen falsch ist.Antworten:
CJam ,
2726 BytesProbieren Sie es online!
Erläuterung
Die Blindenschrift-Codepunkte sind ordentlich angeordnet, so dass die einzelnen Punkte in binärer Form hochgezählt werden. Die Reihenfolge der Bits in den Codepunkten ist jedoch unterschiedlich. Wir wollen die folgende Reihenfolge:
Während die Zeichen in Unicode in dieser Reihenfolge angeordnet sind:
(Was irgendwie Sinn macht, weil in der Vergangenheit in Braille nur die ersten sechs Punkte verwendet wurden.) Beachten Sie, dass wir den
7
Punkt nicht benötigen , da die Eingabe garantiert im ASCII-Bereich liegt.[6 5 4 3 2 1 0]
Wenn wir also eine Liste von Bits eines Eingabezeichens haben, wollen wir sie neu anordnen[3 6 5 4 2 1 0]
, um das Bit, das den linken unteren Punkt darstellt, an die höchstwertige Position zu ziehen.quelle
80
.JavaScript (ES6), 83 Byte
quelle
Python 3 ,
987166 BytesProbieren Sie es online!
quelle
CJam , 27 Bytes
1 Byte von Neil gestohlen.
Probieren Sie es online!
Erläuterung
Dies verwendet die gleiche Grundidee wie meine andere CJam-Antwort , verwendet jedoch bitweise Arithmetik anstelle von Basiskonvertierung und Listenmanipulation, um die Bits neu zu ordnen.
quelle
PHP, 109 Bytes
Online Version
quelle
Mathematica 100 Bytes
Ungolfed:
Davon sind +60 Bytes in langen Funktionsnamen gebunden.
quelle
Jelly , 21 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Netzhaut , 59 Bytes
Probieren Sie es online! Hex-Dump:
quelle
C #, 63 Bytes
Probieren Sie es online!
Inspiration von @ovs und @Neil
quelle
Chip ,
6259 BytesProbieren Sie es online!
Ich vermute, ich kann mehr Golf spielen, ich muss nur herausfinden, wie ...
Der Chip liest jedes Byte der Eingabe als eine Sammlung von Bits ein, auf die sich die ersten acht Buchstaben des Alphabets beziehen (Großbuchstaben werden eingegeben, Kleinbuchstaben werden ausgegeben):
Wir müssen diese Bits der Eingabe einfach den folgenden drei Bytes der Ausgabe zuordnen:
Die obere Hälfte des Codes übernimmt die gesamte Sequenzierung und generiert die ersten beiden Bytes, die untere Hälfte generiert das dritte Byte.
Da die Spezifikation nur die Verarbeitung von 7 Bit für ASCII erfordert, wird dies nicht untersucht
H
. Ändern Sie die ZeileB/b
in, um das achte Bit einzuschließenB/b/H
.quelle