Leer el texto de la fuente millitext
Hay un tipo de letra aquí que se adapte a cada personaje en un único bloque de píxeles 1x5. Lo hace (suponiendo que esté utilizando una pantalla LCD) mediante el uso de los canales RGB de cada píxel para expandir el píxel en tres subcolumnas, una para cada canal. Su tarea es tomar una cadena de texto codificada en esta fuente y 'decodificarla'.
Millitext Alphabet
CHARACTER: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ENCODING: WYWBMRRMMMWYWYWWWMWBMRMYGYGYCWMMMMMW
MGBWMRRMMMMMRMRRRMGBMRWMMMMMRGMMMMMB
MGWWWWWBWWWYRMWWMWGBYRWMMYMYGGMMWGGG
MGRBBBMBMBMMRMRRMMGBMRMMMRWMBGMCWMGR
WWWWBWWBWWMYWYWRWMWWMWMMGRCMYGWBMMGW
He abreviado cada color a un símbolo de un carácter (R = rojo, G = verde, B = azul, C = cian, Y = amarillo, M = magenta, W = blanco).
Formato de entrada
El formato de entrada para esto es bastante abierto. Puede hacer que la entrada sea una matriz que contenga cada columna, una matriz que contenga cada fila, una char[][]
o algo así. También puede elegir usar las palabras completas "rojo", "verde", "azul", con mayúsculas / minúsculas de su elección (¡pero debe ser coherente para cada palabra! No puede usar "ROJO" y tampoco "verde" o "azul").
Si su idioma lo admite, también puede hacer que la entrada sea en colores (sin embargo, eso podría funcionar, no lo sé de manera inmediata).
Puede suponer que la entrada SOLO contendrá caracteres codificados en el alfabeto anterior (en particular, no habrá espacios ni signos de puntuación en su salida).
Formato de salida
Puede generar una cadena o algún tipo de matriz de caracteres. Puede elegir si las letras son mayúsculas o minúsculas, pero todas deben tener el mismo caso.
Ejemplo
MWRRGMGYRY
MRRRMMMMRM
WWRRMWMYRM -> HELLOWORLD
MRRRMWMMRM
MWWWGMGMWY
Reglas
Este es el código de golf , por lo que gana la respuesta más corta.
Equipo de prueba
WMWGMWWMYYGMYWGMBMMYWYGMWYWMWRWWMYGW
GMRMMGRMMMMMMRMMBMWMRMMMRMGMRRMBMMMR
GWWMMGRYYYMWMWMGBMWYWMMMWYGWWRWGGMMM -> THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG
GMRWMGRMMMMWMRMMBMMRRMMCRMGMRRMRGMMM
GMWCWWWMYMGMMRGMWWMRWYGBWMGMWWMWGYGW
Respuestas:
JavaScript (ES6),
103100 93 9290 bytesGuardado 9 bytes gracias a @ShieruAsakoto
Toma datos como una matriz de columnas. Devuelve una matriz de caracteres.
Pruébalo en línea!
fuente
-
desaparezcan! : 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])
Jalea , 50 bytes
Pruébalo en línea!
Un enlace monádico que acepta la entrada como una lista de columnas y genera una cadena Jelly de la traducción. La explicación completa a seguir, pero se basa en el hecho de que cada posible conjunto de 5 letras es único cuando se convierte en puntos de código, se convierte de nuevo desde base-256 a decimal y luego mod 211.
Alternativa usando la fuente fija de Arnauld (49 bytes y usando el mismo principio).
Explicación
fuente
dzaima / APL,
8079737271 bytesPruébalo en línea!
fuente
⊇
(similar a{⍵[⍺]}
), aparte de eso, estos dos archivos contienen información al respecto05AB1E ,
4544 bytesPruébalo en línea!
Toma la entrada como una matriz de columnas y genera una matriz de caracteres.
Explicación:
fuente
R ,
143128bytesPruébalo en línea!
Función que toma un vector de cadenas (correspondientes a las columnas) como entrada, por ejemplo:
Explicacion:
Realizando la siguiente operación para cada cadena codificada (por ejemplo, 'CRGBY' = 'S'):
obtenemos la siguiente cadena
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
donde corresponde cada carácter'0123456789ABCDEFGHIJKLMNOPQR'
.Entonces, el código realiza las operaciones descritas en las cadenas de entrada, luego busca sus correspondencias dentro de la
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
obtención de las posiciones en cadena'0123456789ABCDEFGHIJKLMNOPQR'
.fuente
Carbón , 66 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Toma la entrada como una lista de columnas terminadas con una línea en blanco. Explicación:
Introduzca cadenas hasta que una esté en blanco.
Indice cíclicamente en la cadena
OV EX8HSCF5IA L TG 17 M P9RB 4 K ZY2 0JW 63Q ND U
que (con espacio final) tiene 56 caracteres de longitud.Realice la conversión de base-7 usando el alfabeto
WMYCBGR
y luego reduzca sucesivamente los módulos 360, 113, 71 y 56 implícitamente a través de la indexación cíclica.Mi enfoque de base 7 fue realmente malo con la fuente fija de @ Arnauld; Después de algunas búsquedas todavía estaba en 73 bytes. Usando el enfoque de @ Grimy, reduzca esto a 67 bytes. Sin embargo, finalmente rastreé una solución de 66 bytes:
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Introduzca cadenas hasta que una esté en blanco.
Indice cíclicamente en la cadena
ID HAM178 VS4F 3R EP6CQ Z UB O 0 X 9 G 5TNJKL2Y W
que tiene 63 caracteres de longitud.Realice la conversión de base 47 usando el alfabeto
0-9A-Za-k
y luego reduzca sucesivamente los módulos 237, 73, 67 y 63 implícitamente a través de la indexación cíclica.fuente
CJam (63 bytes)
o en formato xxd
Este es un bloque anónimo (función) que espera entrada como una lista de columnas. Demo en línea .
Como muchas de las otras respuestas, esto hace una conversión de base seguida de una cadena de% para obtener una tabla de búsqueda corta. En este caso uso base 16 y% chain
[245 225 214 197 159 123 97 40]
.fuente
Jalea , 48 bytes
Un enlace monádico que acepta una lista de listas de caracteres en mayúsculas (cada una es una columna) que produce una lista de caracteres.
Pruébalo en línea!
¿Cómo?
fuente
Ruby , 109 bytes
Pruébalo en línea!
fuente
Stax , 46 bytes
Ejecutar y depurarlo
Cada columna se decodifica como base-36. Módulo sucesivo de 8273, luego se aplican 95. Esto produce un número único, buscado en una cadena fija.
Toma datos exactamente en el formato especificado en los ejemplos, y tiene que transponerlos para obtener columnas. Podré guardar algunos bytes usando un formato de entrada diferente, lo que puedo hacer en algún momento.
fuente