Ce petit cochon est allé au marché, ce petit cochon a écrit du code ...
Ah attendez, nous ne parlons pas de ce bacon, nous parlons de Sir Francis Bacon! Plus précisément, le chiffrement Bacon conçu à la fin des années 1500 , comme une méthode pour cacher un message dans un autre message, une méthode de stéganographie .
Le chiffrement fonctionne en dissimulant le message dans la présentation du texte plutôt que dans son contenu. Tout d'abord, les lettres de votre message sont encodées en binaire (de 0 à 25) comme suit:
Remarque: veuillez utiliser l'encodage suivant dans votre code et ne vous souciez pas des nombres, des espaces ou d'autres symboles dans l'entrée, bien que je puisse concevoir un bonus pour ceux qui incluent ces caractères dans leur encodage. Si vous incluez d'autres symboles, les lettres doivent toujours occuper les espaces 0 à 25 dans l'encodage.
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
Après avoir encodé toutes les lettres de votre message dans les A
s et B
s ci-dessus, vous devez maintenant sélectionner deux polices de caractères pour votre code. Pour cet exemple, j'utiliserai du texte normal pour la police A
et du texte gras pour la police B
.
Donc le message
HELLOWORLD
est codé en
AABBB AABAA ABABB ABABB ABBBA BABBA ABBBA BAAAB ABABB AAABB
Et maintenant, nous cachons ce binaire avec un texte porteur .
Le rapide renard brun saute par-dessus les chiens paresseux, gambadant dans les champs où les bergers veillent.
C'est correct si le message porteur est plus long que le message codé réel, bien qu'il ne puisse pas être plus court. Maintenant, nous transformons le texte du support en gras en fonction de l'emplacement des B
s dans le message codé,
Th e qu ic k bro w n fo x j u mp s ove r t h e l az y faire g s , gam b o l i ng dans t - il des domaines où les bergers maintient montre.
Qui sans Markdown se lit comme
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.
Notez que je n'ai pas utilisé la ponctuation dans le message porteur pour coder le message, mais que la ponctuation soit codée ou non, cela dépend de vous /.
Règles
Votre entrée sera le message à encoder et un message de porteur. Si le message de l'opérateur est trop court, renvoyez une sorte de message d'erreur.
Vous devez sélectionner deux polices de caractères pour le codage
A
etB
, comme majuscule, minuscule, italique , gras , italique gras ,barré,in code format
etc. Vous devez utiliser la forme de Markdown de Stack Exchange pour coder ces polices, c.-à-d.UPPERCASE, lowercase, *italic*, **bold**, ***bold italic***, <s>strikethrough</s>, `in code format`
Votre sortie doit être votre message de transporteur maintenant codé, soit affiché avec Markdown, soit affiché sans, comme le montre l'exemple ci-dessus.
Il vous suffit de créer un algorithme de codage. Tous les algorithmes de décodage que vous souhaitez fournir sont les bienvenus, mais au moment de la rédaction, cela n'aidera ni n'entravera votre score.
Votre code doit être un programme ou une fonction.
C'est le golf de code, donc le plus petit nombre d'octets gagne.
Comme toujours, si le problème n'est pas clair, faites-le moi savoir. Bonne chance et bon golf!
la source
Réponses:
Pyth, 47 octets
Essayez-le ici .
Explication:
la source
Python 3,
216211231225207 octetsIl s'agit d'une solution qui utilise du texte normal et des italiques de style Markdown pour ses deux polices de caractères. Et il encode tout dans le message du transporteur, sauf les espaces.Éditer: J'ai dû corriger le code pour que le résultat s'imprime correctement et a ajouté des exemples sous le code.
Modifier: modification du code pour une solution en majuscules / minuscules précédemment pire, en raison de problèmes d'impression correcte de l'italique.
Exemples
Non golfé:
la source
C, 124 octets
Cela nécessite que les arguments soient dans un codage compatible ASCII (par exemple ISO-8859.1 ou UTF-8). Il modifie la porteuse en place et renvoie 0 en cas de succès, ou différent de zéro sinon. Le codage est
A
== minuscule etB
== majuscule. Les lettres de support inutilisées sont définies en haut.Explication
Y compris un programme de test. Passez les lettres à coder comme premier argument et la chaîne de support comme deuxième.
Sortie de test:
la source