Lesen Sie den Text der Millitext-Schrift
Es gibt eine Schrift hier , dass jedes Zeichen in einen einzigen, 1x5 Pixelblock paßt. Dies geschieht (vorausgesetzt, Sie verwenden einen LCD-Bildschirm), indem Sie die RGB-Kanäle jedes Pixels verwenden, um das eine Pixel in drei Unterspalten zu erweitern, eine für jeden Kanal. Ihre Aufgabe ist es, eine in dieser Schriftart kodierte Textfolge aufzunehmen und zu "dekodieren".
Millitext-Alphabet
CHARACTER: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ENCODING: WYWBMRRMMMWYWYWWWMWBMRMYGYGYCWMMMMMW
MGBWMRRMMMMMRMRRRMGBMRWMMMMMRGMMMMMB
MGWWWWWBWWWYRMWWMWGBYRWMMYMYGGMMWGGG
MGRBBBMBMBMMRMRRMMGBMRMMMRWMBGMCWMGR
WWWWBWWBWWMYWYWRWMWWMWMMGRCMYGWBMMGW
Ich habe jede Farbe mit einem Ein-Zeichen-Symbol abgekürzt (R = Rot, G = Grün, B = Blau, C = Cyan, Y = Gelb, M = Magenta, W = Weiß).
Eingabeformat
Das Eingabeformat dafür ist ziemlich offen. Die Eingabe kann ein Array sein, das jede Spalte enthält, ein Array, das jede Zeile enthält, ein char[][]
oder ähnliches. Sie können auch die vollständigen Wörter "rot", "grün", "blau" mit Groß- / Kleinbuchstaben Ihrer Wahl verwenden (dies muss jedoch für jedes Wort konsistent sein! Sie können nicht "rot" und auch "grün" verwenden oder "Blau").
Wenn Ihre Sprache dies unterstützt, können Sie auch Farben eingeben (was auch immer funktionieren mag, ich weiß es nicht).
Sie können davon ausgehen, dass die Eingabe NUR codierte Zeichen im obigen Alphabet enthält (insbesondere enthält Ihre Ausgabe keine Leerzeichen oder Satzzeichen).
Ausgabeformat
Sie können entweder eine Zeichenfolge oder eine Art Zeichenfeld ausgeben. Sie können wählen, ob die Buchstaben in Groß- oder Kleinbuchstaben geschrieben werden sollen, sie müssen jedoch alle die gleiche Groß- und Kleinschreibung haben.
Beispiel
MWRRGMGYRY
MRRRMMMMRM
WWRRMWMYRM -> HELLOWORLD
MRRRMWMMRM
MWWWGMGMWY
Regeln
Das ist Code-Golf , also gewinnt die kürzeste Antwort!
Testset
WMWGMWWMYYGMYWGMBMMYWYGMWYWMWRWWMYGW
GMRMMGRMMMMMMRMMBMWMRMMMRMGMRRMBMMMR
GWWMMGRYYYMWMWMGBMWYWMMMWYGWWRWGGMMM -> THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG
GMRWMGRMMMMWMRMMBMMRRMMCRMGMRRMRGMMM
GMWCWWWMYMGMMRGMWWMRWYGBWMGMWWMWGYGW
Antworten:
JavaScript (ES6),
103 100 93 9290 Bytes9 Bytes dank @ShieruAsakoto eingespart
Übernimmt die Eingabe als Array von Spalten. Gibt ein Array von Zeichen zurück.
Probieren Sie es online!
quelle
-
verschwinden! : 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])
Gelee , 50 Bytes
Probieren Sie es online!
Ein monadischer Link, der die Eingabe als Liste von Spalten akzeptiert und eine Jelly-Zeichenfolge der Übersetzung ausgibt. Es folgt eine vollständige Erklärung, die sich jedoch auf die Tatsache stützt, dass jeder mögliche Satz von 5 Buchstaben eindeutig ist, wenn er in Codepunkte konvertiert wird, von der Basis 256 in die Dezimalzahl und dann in die Modifikation 211 zurückkonvertiert wird.
Alternative mit Arnauld's fester Schriftart (49 Bytes und nach dem gleichen Prinzip.)
Erläuterung
quelle
dzaima / APL,
8079737271 BytesProbieren Sie es online!
quelle
⊇
(ähnlich wie{⍵[⍺]}
), abgesehen davon , dass diese beiden Dateien Informationen darüber enthalten05AB1E ,
4544 BytesProbieren Sie es online!
Nimmt Eingaben als Array von Spalten und gibt ein Array von Zeichen aus.
Erläuterung:
quelle
R ,
143128 BytesProbieren Sie es online!
Funktion, die einen Vektor von Strings (entsprechend den Spalten) als Eingabe verwendet, zB:
Erklärung:
Führen Sie für jede codierte Zeichenfolge die folgende Operation aus (z. B. 'CRGBY' = 'S'):
Wir erhalten die folgende Zeichenfolge, der
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
jedes Zeichen entspricht'0123456789ABCDEFGHIJKLMNOPQR'
.Der Code führt also die beschriebenen Operationen an den Eingabezeichenfolgen aus und durchsucht dann deren Entsprechungen
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
, um die Positionen in der Zeichenfolge zu erhalten'0123456789ABCDEFGHIJKLMNOPQR'
.quelle
Kohle , 66 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Übernimmt die Eingabe als Liste von Spalten, die mit einer Leerzeile abgeschlossen werden. Erläuterung:
Geben Sie die Zeichenfolgen ein, bis eine leer ist.
Indizieren Sie zyklisch in den String,
OV EX8HSCF5IA L TG 17 M P9RB 4 K ZY2 0JW 63Q ND U
der (mit Leerzeichen am Ende) 56 Zeichen lang ist.Führen Sie eine Base-7-Konvertierung mit dem Alphabet durch
WMYCBGR
und reduzieren Sie dann implizit nacheinander modulo 360, 113, 71 und 56 über die zyklische Indizierung.Mein Ansatz zur Basis 7 schnitt mit der festen Schriftart von @ Arnauld sehr schlecht ab. Nach einigem Suchen war ich immer noch bei 73 Bytes. Mit @ Grimys Ansatz können Sie dies auf 67 Bytes reduzieren. Schließlich habe ich jedoch eine 66-Byte-Lösung gefunden:
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Geben Sie die Zeichenfolgen ein, bis eine leer ist.
Indizieren Sie zyklisch die Zeichenfolge mit einer
ID HAM178 VS4F 3R EP6CQ Z UB O 0 X 9 G 5TNJKL2Y W
Länge von 63 Zeichen.Führen Sie die Base-47-Konvertierung mit dem Alphabet durch
0-9A-Za-k
und reduzieren Sie dann implizit nacheinander die Modulo 237, 73, 67 und 63 über die zyklische Indizierung.quelle
CJam (63 Bytes)
oder im xxd Format
Dies ist ein anonymer Block (Funktion), der Eingaben als Liste von Spalten erwartet. Online-Demo .
Wie bei vielen anderen Antworten wird auch hier eine Basiskonvertierung gefolgt von einer Kette von% durchgeführt, um eine kurze Nachschlagetabelle zu erhalten. In diesem Fall verwende ich Base 16 und% chain
[245 225 214 197 159 123 97 40]
.quelle
Jelly , 48 Bytes
Ein monadischer Link, der eine Liste von Listen mit Großbuchstaben akzeptiert (wobei jede Spalte eine Spalte ist), die eine Liste von Zeichen ergibt.
Probieren Sie es online!
Wie?
quelle
Ruby , 109 Bytes
Probieren Sie es online!
quelle
Stax , 46 Bytes
Führen Sie es aus und debuggen Sie es
Jede Spalte wird als base-36 dekodiert. Aufeinanderfolgender Modul von 8273, dann werden 95 angewendet. Dies ergibt eine eindeutige Zahl, die in einer festen Zeichenfolge nachgeschlagen wird.
Es nimmt Eingaben genau in dem in den Beispielen angegebenen Format vor und muss sie transponieren, um Spalten zu erhalten. Ich werde in der Lage sein, einige Bytes zu speichern, indem ich ein anderes Eingabeformat verwende, was ich möglicherweise irgendwann tun werde.
quelle