Hinweis : Diese Herausforderung ist jetzt geschlossen. Alle zukünftigen Polizistenbeiträge werden für die akzeptierte Antwort nicht berücksichtigt. Dies soll sicherstellen, dass in Zukunft niemand mehr eine sehr einfache Regex veröffentlichen kann, die nur ungerissen bleibt, weil sich niemand mehr für die Herausforderung interessiert.
Die Herausforderung der Polizei
Sie müssen einen kurzen, verschleierten regulären Ausdruck schreiben, der die folgende Spezifikation erfüllt:
Sie können jeden Geschmack wählen, der online frei testbar ist. Es gibt eine gute Liste von Online-Testern bei StackOverflow . Insbesondere Regex101 sollte für den Einstieg hilfreich sein, da es PCRE-, ECMAScript- und Python- Varianten unterstützt. Sie können das Zeitlimit erhöhen, indem Sie bei Bedarf auf den Schraubenschlüssel in der rechten oberen Ecke klicken. Bitte geben Sie den von Ihnen gewählten Tester in Ihrer Antwort an.
Wenn kein geeigneter Tester für Ihren Geschmack verfügbar ist, können Sie auch einen Online-Dolmetscher wie ideone verwenden und ein kleines Skript in der Host-Sprache schreiben, mit dem die Benutzer Ihre Einreichung testen können.
- Sie können jede Funktion dieser Art verwenden, die die Hostsprache nicht direkt aufruft (wie die Code-Evaluierungsfunktionen von Perl).
- Ebenso können Sie beliebige Modifikatoren verwenden (sofern diese Ihrem Geschmack entsprechen), es sei denn, sie führen zu einer Codebewertung.
- Ihr regulärer Ausdruck muss mindestens eine Zeichenfolge S akzeptieren und mindestens eine Zeichenfolge T ablehnen , von denen jede mindestens 16 und nicht länger als 256 Zeichen ist, und das in einem angemessenen Zeitraum (nicht wesentlich länger als eine Minute). S und T können Unicode-Zeichen enthalten, die nicht ASCII-Zeichen sind, sofern Sie sie in den Online-Tester eingeben können. Jedes Paar solcher Zeichenfolgen ist ein Schlüssel für Ihre Einreichung.
- Ihr regulärer Ausdruck kann bei jeder anderen Eingabe beliebig lange dauern.
Der Kern der Herausforderung besteht darin, einen Regex herzustellen, dessen Schlüssel schwer zu finden ist. Das heißt, es sollte entweder schwer zu sagen sein, mit welcher Zeichenfolge es nicht übereinstimmt oder mit welcher Zeichenfolge es übereinstimmt (oder möglicherweise sogar beides, wenn der reguläre Ausdruck Tage benötigt, um alle Zeichenfolgen außer den Zeichenfolgen des Schlüssels zu beenden).
Die Herausforderung der Räuber
Alle Benutzer, einschließlich derer, die ihre eigenen Regex (e) eingereicht haben, werden aufgefordert, andere Beiträge zu "knacken". Ein Beitrag wird geknackt, wenn einer seiner Schlüssel im zugehörigen Kommentarbereich veröffentlicht wird.
Wichtig: Stellen Sie sicher, dass beide Strings zwischen 16 und 256 Zeichen enthalten, auch wenn für einen Teil des Schlüssels fast jeder String verwendet werden kann.
Wenn eine Einreichung 72 Stunden lang ohne Änderung oder Rissbildung besteht, kann der Autor einen gültigen Schlüssel offenlegen, indem er ihn in seiner Antwort in einen Spoiler-Tag umwandelt. Dadurch wird seine Antwort "sicher", dh es kann nicht mehr geknackt werden.
Es ist nur ein Cracking-Versuch pro Einsendung pro Benutzer zulässig. Wenn ich zum Beispiel an Benutzer X sende: "Ihr Schlüssel ist 0123456789abcdef
/ fedcba9876543210
." Wenn ich mich irre, lehnt Benutzer X meine Vermutung als falsch ab und ich kann keine weiteren Vermutungen für diese Übermittlung mehr einreichen, aber ich kann trotzdem andere Übermittlungen knacken (und andere können diese Übermittlung immer noch knacken).
Gebrochene Einsendungen werden von der Konkurrenz ausgeschlossen (sofern sie nicht "sicher" sind). Sie sollten nicht bearbeitet oder gelöscht werden. Wenn ein Autor einen neuen regulären Ausdruck einreichen möchte, sollte er dies in einer separaten Antwort tun.
Knacken Sie nicht Ihre eigene Vorlage!
Hinweis: Bei langen Zeichenfolgen in Kommentaren ohne Leerzeichen fügt SE manuelle Zeilenumbrüche in Form von zwei Unicode-Zeichen ein. Wenn Sie also einen Schlüssel in Backticks posten, der so lang ist, dass er in Zeilenumbrüche zwischen nicht-Leerzeichen eingeschlossen ist, ist es nicht möglich, den Schlüssel direkt wieder in einen Regex-Tester zu kopieren. In diesem Fall senden Sie bitte einen Permalink zum entsprechenden Regex-Tester mit dem Regex des Polizisten und Ihrem Schlüssel. Die meisten Tester bieten diese Funktion an.
Wertung
Die Punktzahl eines Polizisten entspricht der Größe seines regulären Ausdrucks in Byte (Muster plus Modifikatoren, potenzielle Begrenzer werden nicht gezählt), sofern er nicht geknackt wurde. Die niedrigste Punktzahl einer "sicheren" Einreichung gewinnt.
Die Punktzahl eines Räubers ist die Anzahl der Einreichungen, die er geknackt hat. Im Falle eines Unentschiedens wird die Gesamtbyte-Größe der von ihnen geknackten Einsendungen als Unentschiedener verwendet. Hier gewinnt die höchste Bytezahl.
Wie oben erwähnt, kann jeder Cop als Räuber teilnehmen und umgekehrt.
Ich werde separate Bestenlisten für die beiden Teile der Herausforderung führen.
Bestenlisten
Letzte Aktualisierung: 19.10.2014, 20:33 UTC
Polizei:
Beiträge in Kursivschrift sind noch nicht sicher.
- Nneonneo , 841 Bytes
- Wumpus Q. Wumbley , 10.602 Bytes
- Sp3000 , 52.506 Bytes
- user23013 , 53,884 bytes
- Nneonneo , 656.813 Bytes
Räuber:
- user23013 , Cracked: 11, Gesamtgröße : 733 + 30 + 2.447 + 71 + 109 + 121 + 97 + 60 + 141 + 200.127 + 7.563 = 211.499 Bytes
- nneonneo , geknackt : 10, Gesamtgröße : 4.842 + 12.371 + 150 + 3.571 + 96 + 168 + 395 + 1.043 + 458 + 17.372 = 40.466 Byte
- Wumpus Q. Wummelig , Gebrochen: 6, Gesamtgröße : 22 + 24 + 158 + 32 + 145.245 + 145.475 = 290.956 Bytes
- Dennis , Gebrochen: 2, Gesamtgröße: 70 + 73 = 143 Bytes
- harius , Gebrochen: 1, Gesamtgröße : 9.998 Bytes
- g.rocket , Gebrochen: 1, Gesamtgröße : 721 Bytes
- stokastisch , Gebrochen: 1, Gesamtgröße : 211 Bytes
- Sp3000 , Gebrochen: 1, Gesamtgröße : 133 Bytes
- TwiNight , Cracked: 1, Gesamtgröße : 39 Bytes