Ein Riffle Shuffle ist eine Methode zum Mischen von Karten, bei der das Deck in zwei ungefähr gleiche Abschnitte aufgeteilt und die Abschnitte in kleinen Gruppen ineinander gespalten werden. So mischen Sie eine Zeichenfolge:
- Teilen Sie die Zeichenfolge in gleiche Abschnitte.
- Kehren Sie die Zeichenfolgen um und beginnen Sie am Anfang jeder Zeichenfolge.
- Fügen Sie Läufe mit einer gleichmäßig zufälligen Länge zwischen 1 und der Anzahl der in der aktuellen Zeichenfolge verbleibenden Zeichen in die endgültige Zeichenfolge ein
- Entfernen Sie dann diese Zeichen aus der Zeichenfolge.
- Wiederholen Sie dies für die andere Hälfte, bis beide Hälften leer sind.
Ein Beispiel
"Hello World!" Output string = ""
"Hello ", "World!" ""
"Hell", "World!" " o"
"Hell", "World" " o!"
"Hel", "World" " o!l"
"Hel", "Wo" " o!ldlr"
"H", "Wo" " o!ldlrle"
"H", "" " o!ldlrleoW"
"", "" " o!ldlrleoWH"
Das Endprodukt von Hello World!
könnte sein o!ldlrleoWH
und das würden Sie ausgeben.
Cops
Ihre Aufgabe ist es, ein Programm (oder eine Funktion) zu erstellen, mit dem eine Zeichenfolge gemischt wird. Wenn die eingegebene Zeichenfolge eine ungerade Länge hat, teilen Sie sie einfach in zwei Zeichenfolgen mit ungerader Länge und einer relativen Länge von +1
und +0
( abc => [ab, c] or [a, bc]
) auf. Sie können Eingaben auf normale Weise vornehmen und Ausgaben auf normale Weise erzeugen.
Ihre Cops-Einreichung besteht aus 4 Dingen
- Die Sprache, die Sie verwendet haben
- Die Länge Ihres Programms in Bytes
- Ihr Programm, Riffle gemischt.
- Alles andere, was Sie hinzufügen möchten
Sie möchten verhindern, dass Ihr Code 7 Tage lang von den Räubern geknackt wird. Nach dieser Zeit ist Ihr Programm sicher und Sie sollten es in Ihrem ursprünglichen Programm bearbeiten. Ihre Einreichung kann noch geknackt werden, bis Sie Ihre Lösung offenlegen. Die kürzeste und sicherste Lösung ist der Gewinner!
quelle
Antworten:
Gelee, 11 Bytes, geknackt
Dies ist eine Golfversion, so dass jemand sie wahrscheinlich leicht knacken kann, indem er einfach eine Golfversion macht. Es gibt wahrscheinlich ein paar verschiedene Ansätze, aber ich vermute, dass dieser Ansatz bei Golfsprachen anständig verbreitet sein wird.
Der SHA-384-Hash meines beabsichtigten Programms ist
86025a659b3c5fc38e943f72b1f26e28e2e751a7118a589073f1d24fa61ff6b02753d6a0f3f0c7fee6555de69fd06a74
(unter Verwendung der UTF-8-Codierung).quelle
> <> 46 Bytes
Es gibt fast keine Verschleierungen im realen Code, aber ich vermute, dass eine 2D-Sprache ohnehin schwer genug ist, um sie zu knacken.
Haftungsausschluss: Geschrieben, bevor angegeben wurde, dass es einheitlich zufällig sein muss. Dies ist nicht einheitlich zufällig, und ich bin mir nicht sicher, wie ich überhaupt einen einheitlich zufälligen Algorithmus in> <> implementieren würde.
quelle
Python 3, 154 Bytes (Liste der Zeichen -> Liste der Zeichen) (Funktion) Gebrochen
Ich bezweifle, dass dies zu schwer zu knacken sein wird, zumal das einmalige Riffling ziemlich unwirksam ist (Sie können ganze Programmkomponenten in der Ausgabe sehen ...). Dies dient hauptsächlich dazu, die Dinge ins Rollen zu bringen. Möglicherweise gibt es Leerzeichen (einschließlich Zeilenumbrüche), die ich nicht richtig kopiert habe. Der SHA-384-Hash meiner beabsichtigten Lösung ist
5924530418bf8cd603c25da04ea308b124fdddfc61e7060d78b35e50ead69a7fbde9200b5ee16635cc0ee9df9c954fa1
.quelle
Röda , 118 Bytes
Es nimmt einen Zeichenstrom als Eingabe und gibt einen Zeichenstrom aus.
quelle
R , 283 Bytes, geknackt
Mir ist jetzt klar, dass das Schreiben einer längeren Antwort mehr "Läufe" von Zeichen enthält, die leider erhalten bleiben.
Viel Glück!
quelle
Pyth , 14 Bytes, geknackt
Ziemlich standardmäßige Pyth-Implementierung zum Testen des Wassers. Es mag ziemlich leicht zu knacken sein, aber ich denke, wir werden sehen, wie es abschneidet.
quelle
Zufälliger Brainfuck , 273 Bytes
Zufälliger Brainfuck ist der gleiche wie normaler Brainfuck, führt jedoch den
?
Charakter ein, der die aktuelle Zelle auf einen zufälligen Wert setzt. Fun Note; Ich hatte eine Version davon, die aus offensichtlichen Gründen nur für Eingaben mit weniger als 256 Zeichen funktionierte, aber der Code selbst war länger. Als ich es so änderte, dass es länger funktioniert, stellte sich heraus, dass es ein Byte kürzer als das Original war. ¯ \ _ (ツ) _ / ¯.quelle
Aufdringlich , 25 Bytes, geknackt
Übernimmt die Eingabe als
"quoted string"
in der Befehlszeile.quelle
1L
umgekehrt sein? Andernfalls addieren Sie 1 zur LängeAPL (Dyalog Unicode) , 62 Bytes
SHA-384 meiner beabsichtigten Lösung:
3209dba6ce8abd880eb0595cc0a334be7e686ca0aa441309b7c5c8d3118d877de2a48cbc6af9ef0299477e3170d1b94a
Dies ist wahrscheinlich einfach genug, zumal die meisten Leute im APL-Chat mir geholfen haben, diese Antwort zu erstellen.
quelle