I nie, to nie jest duplikat tłumaczenia tekstu ASCII na Braille'a .
W standardzie Unicode jest 2 8 = 256 wzorów brajlowskich . (Przez „Braille'a” mam na myśli 8-komórkowe)
W, czekaj. Ile było znaków ASCII?
2 7 = 128?
A zatem zamieńmy ASCII w brajla, ponieważ absolutnie nie ma powodu, aby tego nie robić!
Droga z ASCII do brajla
Widzimy, że każda komórka reprezentuje bit, który jest „dziurkowany” lub nie.
Teraz możemy przydzielić każdą komórkę do reprezentowania bitów znaku ASCII jako binarnego.
(1 )(16 )
(2 )(32 )
(4 )(64 )
(8 )( - )
* ( - )
jest puste
Teraz możemy przekonwertować ASCII na brajla. Na przykład A
(65 = 01000001) jest równe ⠡
.
Przykłady
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
to⠱
nie⠹
(co moim zdaniem jestq
)?a
jest⠱
.⠹
byłoby źle, ponieważ ma niewłaściwą liczbę wykrawanych komórek.Odpowiedzi:
CJam ,
2726 bajtówWypróbuj online!
Wyjaśnienie
Punkty kodu brajlowskiego są uporządkowane, dzięki czemu poszczególne kropki liczą się w systemie binarnym. Jednak kolejność bitów w punktach kodowych jest inna. Chcemy następującej kolejności:
Podczas gdy znaki są ułożone w Unicode w tej kolejności:
(Co to ma sens, ponieważ historycznie Braille używał tylko pierwszych sześciu kropek.) Zauważ, że nie potrzebujemy
7
kropki, ponieważ wejście ma gwarantowany zakres ASCII. Biorąc pod uwagę listę bitów[6 5 4 3 2 1 0]
znaku wejściowego, chcemy zmienić ich kolejność[3 6 5 4 2 1 0]
, aby przeciągnąć bit reprezentujący lewą dolną kropkę do najbardziej znaczącej pozycji.źródło
80
.JavaScript (ES6), 83 bajty
źródło
Python 3 ,
987166 bajtówWypróbuj online!
źródło
CJam , 27 bajtów
1 bajt skradziony Neilowi.
Wypróbuj online!
Wyjaśnienie
Korzysta z tego samego podstawowego pomysłu, co w mojej innej odpowiedzi CJam, ale używa bitowej arytmetyki zamiast konwersji bazowej i manipulacji listą w celu zmiany kolejności bitów.
źródło
PHP, 109 bajtów
Wersja online
źródło
Mathematica 100 bajtów
Nie golfowany:
+60 bajtów tego związanych w długich nazwach funkcji.
źródło
Galaretka , 21 bajtów
Wypróbuj online!
Jak to działa
źródło
Siatkówka , 59 bajtów
Wypróbuj online! Zrzut szesnastkowy:
źródło
C #, 63 bajty
Wypróbuj online!
Inspiracje od @ovs i @Neil
źródło
Chip ,
6259 bajtówWypróbuj online!
Podejrzewam, że mogę bardziej zagrać w golfa, muszę tylko dowiedzieć się, jak ...
Chip odczytuje w każdym bajcie wejścia jako zbiór bitów, o których mowa w pierwszych ośmiu literach alfabetu (wielkie litery to wejście, dolne to wyjście):
Musimy po prostu odwzorować te bity danych wejściowych na następujące trzy bajty danych wyjściowych:
Górna połowa kodu wykonuje całe sekwencjonowanie i generuje pierwsze dwa bajty, dolna połowa generuje trzeci bajt.
Ponieważ specyfikacja wymaga obsługi tylko 7 bitów dla ASCII, nie badamy
H
. Aby dołączyć ósmy bit, zmień wierszB/b
naB/b/H
.źródło