Este cerdito salió al mercado, este cerdito escribió un código ...
Ah, espera, no estamos hablando de ese tocino, ¡estamos hablando de Sir Francis Bacon! Específicamente, el cifrado Bacon ideó a fines del siglo XVI , como un método para ocultar un mensaje dentro de otro mensaje, un método de esteganografía .
El cifrado funciona ocultando el mensaje en la presentación del texto, en lugar de su contenido. Primero, las letras de su mensaje se codifican en binario (de 0 a 25) de la siguiente manera:
Nota: Utilice la siguiente codificación en su código y no se preocupe por los números, espacios u otros símbolos en la entrada, aunque puedo idear alguna bonificación para aquellos que incluyen estos caracteres en su codificación. Si incluye otros símbolos, las letras aún deben ocupar espacios 0-25 en la codificación.
Letter Encoding
A AAAAA
B AAAAB
C AAABA
D AAABB
E AABAA
F AABAB
G AABBA
H AABBB
I ABAAA
J ABAAB
K ABABA
L ABABB
M ABBAA
N ABBAB
O ABBBA
P ABBBB
Q BAAAA
R BAAAB
S BAABA
T BAABB
U BABAA
V BABAB
W BABBA
X BABBB
Y BBAAA
Z BBAAB
Después de haber codificado todas las letras en su mensaje en el A
s y B
s anterior, ahora debe seleccionar dos tipos de letra para su código. Para este ejemplo, usaré texto normal para la tipografía A
y texto en negrita para la tipografía B
.
Entonces el mensaje
HELLOWORLD
está codificado para
AABBB AABAA ABABB ABABB ABBBA BABBA ABBBA BAAAB ABABB AAABB
Y ahora ocultamos este binario con un texto de portador .
El rápido zorro marrón salta sobre los perros perezosos, jugando en los campos donde los pastores vigilan.
Está bien si el mensaje del operador es más largo que el mensaje codificado real, aunque no puede ser más corto. Ahora convertimos el texto del operador en negrita de acuerdo con la B
ubicación de los s en el mensaje codificado,
Th e qu ic k bro w n fo x j u mp s ove r t h e l az y hacer g s , gam b o l i ng en t él campos donde los pastores mantiene reloj.
Que sin Markdown se lee como
Th**e** **qu**ic**k** bro**w**n **fo**x **j**u**mp**s **ove**r **t**h**e** **l**az**y**
**do**g**s**, gam**b**o**l**i**ng** in t**he** fields where the shepherds keeps watch.
Tenga en cuenta que no utilicé la puntuación en el mensaje del operador para codificar el mensaje, pero si la puntuación está codificada o no depende de usted /.
Reglas
Su entrada será el mensaje que se codificará y un mensaje del operador. Si el mensaje del operador es demasiado corto, devuelva algún tipo de mensaje de error.
Debe seleccionar dos tipos de letra para codificar
A
yB
, como MAYÚSCULAS, minúsculas, cursiva , negrita , negrita cursiva ,tachado,in code format
etc. Debe usar la forma de Markdown de Stack Exchange para codificar estos tipos de letra, es decirUPPERCASE, lowercase, *italic*, **bold**, ***bold italic***, <s>strikethrough</s>, `in code format`
Su salida debe ser su mensaje de operador ahora codificado, ya sea con Markdown o sin él, como se ve en el ejemplo anterior.
Solo se requiere que haga un algoritmo de codificación. Cualquier algoritmo de decodificación que desee proporcionar es bienvenido, pero al momento de escribir no ayudará ni dificultará su puntaje.
Su código debe ser un programa o una función.
Este es el código de golf, por lo que gana el menor número de bytes.
Como siempre, si el problema no está claro, hágamelo saber. ¡Buena suerte y buen golf!
fuente
Respuestas:
Pyth, 47 bytes
Pruébalo aquí .
Explicación:
fuente
Pitón 3,
216211231225207 bytesEsta es una solución que utiliza texto normal y cursivas de estilo Markdown para sus dos tipos de letra. Y codifica todo en el mensaje del operador excepto los espacios.Editar: tuve que arreglar el código para que el resultado se imprima correctamente y agregue ejemplos debajo del código.
Editar: editó el código a una solución en mayúsculas / minúsculas peor anteriormente, debido a problemas al imprimir las cursivas correctamente.
Ejemplos
Sin golf:
fuente
C, 124 bytes
Esto requiere que los argumentos estén en una codificación compatible con ASCII (por ejemplo, ISO-8859.1 o UTF-8). Modifica el operador en el lugar y devuelve 0 en caso de éxito, o no es cero de lo contrario. La codificación es
A
== minúsculas yB
== mayúsculas. Las letras de portador no utilizadas se establecen en la parte superiorExplicación
Incluyendo un programa de prueba. Pase las letras para codificar como el primer argumento y la cadena de soporte como el segundo.
Prueba de salida:
fuente