Dieses kleine Schweinchen ging auf den Markt, dieses kleine Schweinchen schrieb einen Code ...
Ach warte, wir reden nicht über diesen Speck, wir reden über Sir Francis Bacon! Insbesondere die Chiffre Bacon in den späten 1500er Jahren als Methode zum Verstecken einer Nachricht in einer anderen Nachricht, eine Methode der Steganographie .
Die Chiffre verbirgt die Botschaft in der Präsentation des Textes und nicht in dessen Inhalt. Zunächst werden die Buchstaben Ihrer Nachricht wie folgt binär (von 0 bis 25) codiert:
Hinweis: Bitte verwenden Sie die folgende Codierung in Ihrem Code und sorgen Sie sich nicht um Zahlen, Leerzeichen oder andere Symbole in der Eingabe, obwohl ich möglicherweise einen Bonus für diejenigen ausdenken kann, die diese Zeichen in ihre Codierung einbeziehen. Wenn Sie andere Symbole einfügen, müssen die Buchstaben in der Kodierung noch die Leerzeichen 0-25 belegen.
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
Nachdem Sie alle Buchstaben in Ihrer Nachricht in die obigen Buchstaben A
s und B
s codiert haben , müssen Sie nun zwei Schriftarten für Ihren Code auswählen . In diesem Beispiel verwende ich normalen Text als Schriftart A
und fetten Text als Schriftart B
.
Also die Nachricht
HELLOWORLD
ist zu codiert
AABBB AABAA ABABB ABABB ABBBA BABBA ABBBA BAAAB ABABB AAABB
Und jetzt verbergen wir diese Binärdatei mit einem Trägertext .
Der schnelle braune Fuchs springt über die faulen Hunde und torkelt auf den Feldern, auf denen die Hirten Wache halten.
Es ist in Ordnung, wenn die Trägernachricht länger als die tatsächlich codierte Nachricht ist, sie kann jedoch nicht kürzer sein. Nun machen wir den Trägertext fett, je nachdem, wo sich das B
s in der verschlüsselten Nachricht befindet.
Th e qu ic k bro w n fo x j u mp s Ove r t h e l az y tun g en , gam b o l i ng in t er Bereiche , in denen die Fische Uhr hält.
Was ohne Markdown so liest
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.
Beachten Sie, dass ich die Interpunktion in der Trägernachricht nicht zum Codieren der Nachricht verwendet habe, aber es liegt an Ihnen, ob die Interpunktion codiert ist oder nicht.
Regeln
Ihre Eingabe ist die zu verschlüsselnde Nachricht und eine Trägernachricht. Wenn die Trägernachricht zu kurz ist, geben Sie eine Art Fehlermeldung zurück.
Sie müssen zwei Schriften wählen für die Codierung
A
undB
, wie Groß, Kleinbuchstaben, kursiv , fett , fett und kursiv ,durchgestrichen,in code format
und so weiter. Sie müssen die Form von Markdown von Stack Exchange verwenden, um diese Schriftarten zu codieren, d. HUPPERCASE, lowercase, *italic*, **bold**, ***bold italic***, <s>strikethrough</s>, `in code format`
Ihre Ausgabe muss Ihre jetzt codierte Trägernachricht sein, die entweder mit oder ohne Markdown angezeigt wird (siehe obiges Beispiel).
Sie müssen lediglich einen Kodierungsalgorithmus erstellen. Alle Decodierungsalgorithmen, die Sie zur Verfügung stellen möchten, sind willkommen, aber zum Zeitpunkt des Schreibens wird dies Ihre Punktzahl weder verbessern noch behindern.
Ihr Code muss ein Programm oder eine Funktion sein.
Das ist Codegolf, also gewinnt die kleinste Anzahl von Bytes.
Wie immer, wenn das Problem unklar ist, lassen Sie es mich bitte wissen. Viel Glück und gutes Golfen!
quelle
Antworten:
Pyth, 47 Bytes
Probieren Sie es hier aus .
Erläuterung:
quelle
Python 3,
216211231225207 BytesHierbei handelt es sich um eine Lösung, die für ihre beiden Schriften normalen Text und Kursivschrift im Markdown-Stil verwendet. Und es kodiert alles in der Trägernachricht mit Ausnahme der Leerzeichen.Bearbeiten: Musste den Code korrigieren, damit das Ergebnis korrekt gedruckt wird, und Beispiele unter dem Code hinzufügen.
Bearbeiten: Der Code wurde aufgrund von Problemen beim korrekten Drucken der Kursivschrift in eine zuvor schlechtere Lösung für Groß- / Kleinschreibung geändert.
Beispiele
Ungolfed:
quelle
C 124 Bytes
Dies setzt voraus, dass die Argumente in einer ASCII-kompatiblen Codierung vorliegen (z. B. ISO-8859.1 oder UTF-8). Es ändert den Träger an Ort und Stelle und gibt bei Erfolg 0 oder ansonsten ungleich Null zurück. Die Kodierung ist
A
== Kleinbuchstaben undB
== Großbuchstaben. Nicht verwendete Trägerbuchstaben werden nach oben gesetzt.Erläuterung
Einschließlich eines Testprogramms. Übergeben Sie die zu codierenden Buchstaben als erstes Argument und die Trägerzeichenfolge als zweites.
Testausgang:
quelle