Riffle mische eine Schnur - Cops


8

Räuberpost

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!ldlrleoWHund 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 +1und +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!



Der Wechsel zu gleichmäßig zufällig macht mich zu einem traurigen Drachen. Ich hatte Spaß daran, einen Eintrag mit einer Wald-Verteilung (inverses Gauß) zu machen. Ich würde es gerne posten.
Draco18s vertraut SE

Antworten:


2

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.

Ṗ/Œż€X€U2sœ

Der SHA-384-Hash meines beabsichtigten Programms ist 86025a659b3c5fc38e943f72b1f26e28e2e751a7118a589073f1d24fa61ff6b02753d6a0f3f0c7fee6555de69fd06a74(unter Verwendung der UTF-8-Codierung).



@ fireflame241 gute Arbeit +1
HyperNeutrino

2

> <> 46 Bytes

 }lr]l:l~\r[-r}x>o?
<!l>x![; ?=\?(0:2i
:,2-%2:

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.


1

Python 3, 154 Bytes (Liste der Zeichen -> Liste der Zeichen) (Funktion) Gebrochen

[=o;]1-::[]:s[i,]1-::[]s:[i=R,L;2//)i(nel=s    
:)i(r fed
*tropmi modR+L+o nruter    
]:s[L,R=R,L;]s:[L=+o;))L(nel,1(tnidnar=s:R dna L elihw    
]nar morf

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.


@ H.PWiz Python. Hoppla, ich habe vergessen, es hinzuzufügen (auch Bytecount, danke für die Erinnerung!)
HyperNeutrino

Könnten Sie theoretisch einfach versuchen, den Code in umgekehrter Reihenfolge zu mischen und mit Python auszuführen, bis er funktioniert?
fəˈnɛtɪk

@ fəˈnɛtɪk Theoretisch sollte das funktionieren ... Es kann jedoch eine Weile dauern: P
HyperNeutrino

@ fəˈnɛtɪk Das ist so, als würde man versuchen, das Programmiersprachen-Quiz mit TIO Brute Force zu lösen. Es macht keinen Spaß, es zu tun.
user202729


1

Röda , 118 Bytes

2//x#=z}][=]:y[x
}]0>)b..a(#[]1-::[]:y[x
x#%)(reelihw}]0>b#[fi)b(g
getnI]0>a#[fi)a(g{]mo:z[x=b]zdnar=y|x|{=:[g{xx=a
 f

Es nimmt einen Zeichenstrom als Eingabe und gibt einen Zeichenstrom aus.


1

R , 283 Bytes, geknackt

/n,s(daeh-<l
))'',s(tilpsrts(le::sdohtem-<s
)s(rahcn-<n{)s(noitcnufhtgnel(fi
})x-,l(liat-<l
)))x,l(daeh(ver,o(c-<o
)1,)l(htgnel(elihw
}{-<o
)2/n,s(liat-<r
)2'=pes,o(tac
}})y-,r(liat-<r
)))y,r(daeh(ver,o(c-<o
)1,)r(htgnel(elpmas-<y{))r(l(fi{))r(htgnel|)l(htgnel()'htgne}(lpmas-<x{))le

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!



@ Mr.Xcoder danke für die Bearbeitung
Giuseppe


0

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. ¯ \ _ (ツ) _ / ¯.



0

APL (Dyalog Unicode) , 62 Bytes

(g÷f¨()⍵(≢~⊃⍵⍺⍉⍨⍨}(←(←'')⊂f≢(g∘⌈¨}{?↑-⍵↑⋄)≢)))≢⊂{,⋄⍵⍵↑2f≢∘⊃?()

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.