Czytanie tekstu czcionki millitext
Jest tutaj czcionka , która pasuje do każdego znaku w jednym bloku 1x5 pikseli. Robi to (zakładając, że używasz ekranu LCD), wykorzystując kanały RGB każdego piksela do rozwinięcia jednego piksela do trzech subkolumn, po jednym dla każdego kanału. Twoim zadaniem jest pobranie ciągu tekstowego zakodowanego tą czcionką i „odkodowanie”.
Alfabet Millitext
CHARACTER: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ENCODING: WYWBMRRMMMWYWYWWWMWBMRMYGYGYCWMMMMMW
MGBWMRRMMMMMRMRRRMGBMRWMMMMMRGMMMMMB
MGWWWWWBWWWYRMWWMWGBYRWMMYMYGGMMWGGG
MGRBBBMBMBMMRMRRMMGBMRMMMRWMBGMCWMGR
WWWWBWWBWWMYWYWRWMWWMWMMGRCMYGWBMMGW
Skróciłem każdy kolor do symbolu jednoznakowego (R = czerwony, G = zielony, B = niebieski, C = cyjan, Y = żółty, M = magenta, W = biały).
Format wejściowy
Format wejściowy do tego jest dość otwarty. Dane wejściowe mogą być tablicą zawierającą każdą kolumnę, tablicą zawierającą każdy wiersz, a char[][]
lub czymkolwiek podobnym. Możesz także użyć pełnych słów „czerwony”, „zielony”, „niebieski” z wybranymi dużymi / małymi literami (ale muszą być spójne dla każdego słowa! Nie możesz użyć „CZERWONEGO”, a także „zielonego” lub „niebieski”).
Jeśli Twój język go obsługuje, możesz również wprowadzić kolory (jednak może to działać, nie wiem, jak to zrobić z ręki).
Możesz założyć, że dane wejściowe będą zawierać TYLKO zakodowane znaki w powyższym alfabecie (w szczególności nie będzie spacji ani interpunkcji).
Format wyjściowy
Możesz wyprowadzić ciąg znaków lub tablicę znaków. Możesz wybrać, czy litery mają być wielkie czy małe, ale wszystkie muszą mieć tę samą wielkość liter.
Przykład
MWRRGMGYRY
MRRRMMMMRM
WWRRMWMYRM -> HELLOWORLD
MRRRMWMMRM
MWWWGMGMWY
Zasady
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź!
Zestaw testowy
WMWGMWWMYYGMYWGMBMMYWYGMWYWMWRWWMYGW
GMRMMGRMMMMMMRMMBMWMRMMMRMGMRRMBMMMR
GWWMMGRYYYMWMWMGBMWYWMMMWYGWWRWGGMMM -> THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG
GMRWMGRMMMMWMRMMBMMRRMMCRMGMRRMRGMMM
GMWCWWWMYMGMMRGMWWMRWYGBWMGMWWMWGYGW
Odpowiedzi:
JavaScript (ES6),
103 100 93 9290 bajtówZaoszczędź 9 bajtów dzięki @ShieruAsakoto
Pobiera dane wejściowe jako tablicę kolumn. Zwraca tablicę znaków.
Wypróbuj online!
źródło
-
zniknęły! : Da=>a.map(s=>"H-L-D--VGQ87MR6TZ-KJ9WC05BUXF1YI2EON3S-A-P4"[parseInt(s,35)%1161%219%152%43])
.a=>a.map(s=>"UIR-L68N--W-X7B-FH-D-EZ--902-S4M5GJCQT3PKV-A1-YO"[parseInt(s,35)%464%107%99%52])
Galaretka , 50 bajtów
Wypróbuj online!
Monadyczny link akceptujący dane wejściowe jako listę kolumn i generujący ciąg galaretki tłumaczenia. Pełne wyjaśnienie do naśladowania, ale opiera się na fakcie, że każdy możliwy zestaw 5 liter jest unikalny, gdy jest konwertowany na punkty kodowe, konwertowany z podstawowej-256 na dziesiętną, a następnie mod 211.
Alternatywnie przy użyciu stałej czcionki Arnauld (49 bajtów i przy użyciu tej samej zasady).
Wyjaśnienie
źródło
dzaima / APL,
8079737271 bajtówWypróbuj online!
źródło
⊇
(podobnie do{⍵[⍺]}
), poza tym, te dwa pliki zawierają informacje na jej temat05AB1E ,
4544 bajtówWypróbuj online!
Pobiera dane wejściowe jako tablicę kolumn i wyświetla tablicę znaków.
Wyjaśnienie:
źródło
R ,
143128 bajtówWypróbuj online!
Funkcja pobierająca na wejściu wektor ciągów (odpowiadających kolumnom), np .:
Objaśnienie:
Wykonanie następującej operacji dla każdego zakodowanego ciągu (np. „CRGBY” = „S”):
otrzymujemy następujący ciąg, w
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
którym odpowiada każdy znak'0123456789ABCDEFGHIJKLMNOPQR'
.Zatem kod wykonuje opisane operacje na łańcuchach wejściowych, a następnie przeszukuje ich korespondencję w celu
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
uzyskania pozycji w łańcuchu'0123456789ABCDEFGHIJKLMNOPQR'
.źródło
Węgiel drzewny , 66 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Pobiera dane wejściowe jako listę kolumn zakończonych pustą linią. Wyjaśnienie:
Wprowadź ciągi znaków, aż jeden będzie pusty.
Cyklicznie indeksuj do łańcucha,
OV EX8HSCF5IA L TG 17 M P9RB 4 K ZY2 0JW 63Q ND U
który (z końcową spacją) ma 56 znaków.Wykonaj konwersję base-7 za pomocą alfabetu,
WMYCBGR
a następnie zmniejszaj kolejno modulo 360, 113, 71 i 56 niejawnie poprzez cykliczne indeksowanie.Moje podejście bazowe 7 wypadło naprawdę źle ze stałą czcionką @ Arnauld; po kilku poszukiwaniach wciąż miałem 73 bajty. Używając podejścia @ Grimy, zmniejsz to do 67 bajtów. Jednak w końcu wytropiłem 66-bajtowe rozwiązanie:
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wprowadź ciągi znaków, aż jeden będzie pusty.
Cyklicznie indeksuj do łańcucha o
ID HAM178 VS4F 3R EP6CQ Z UB O 0 X 9 G 5TNJKL2Y W
długości 63 znaków.Wykonaj konwersję base-47 za pomocą alfabetu,
0-9A-Za-k
a następnie zmniejszaj sukcesywnie modulo 237, 73, 67 i 63 pośrednio przez cykliczne indeksowanie.źródło
CJam (63 bajty)
lub w formacie xxd
Jest to anonimowy blok (funkcja), który oczekuje danych wejściowych jako listy kolumn. Demo online .
Jak wiele innych odpowiedzi, wykonuje to konwersję podstawową, po której następuje łańcuch%, aby uzyskać krótką tabelę wyszukiwania. W tym przypadku używam podstawy 16 i% łańcucha
[245 225 214 197 159 123 97 40]
.źródło
Galaretka , 48 bajtów
Monadyczny link akceptujący listę list wielkich liter (każda z nich jest kolumną), która daje listę znaków.
Wypróbuj online!
W jaki sposób?
źródło
Rubin , 109 bajtów
Wypróbuj online!
źródło
Stax , 46 bajtów
Uruchom i debuguj
Każda kolumna jest dekodowana jako baza-36. Stosuje się kolejno moduł 8273, a następnie 95. Daje to unikalną liczbę, sprawdzoną w stałym ciągu.
Pobiera dane wejściowe dokładnie w formacie określonym w przykładach i musi je transponować, aby uzyskać kolumny. Będę mógł zapisać niektóre bajty, używając innego formatu wejściowego, co w pewnym momencie mogę zrobić.
źródło