Note : Ce défi est maintenant fermé. Toute soumission future de flics ne sera pas prise en compte pour la réponse acceptée. Ceci afin de garantir que personne ne puisse poster une regex très simple dans le futur qui ne reste pas sans craquer car personne ne s'intéresse plus au défi.
Le défi des flics
Vous devez écrire une regex courte et obscurcie, satisfaisant aux spécifications suivantes:
Vous pouvez choisir n'importe quelle saveur librement testable en ligne. Il existe une bonne liste de testeurs en ligne sur StackOverflow . Regex101 devrait notamment vous aider à démarrer, car il prend en charge les variantes PCRE, ECMAScript et Python. Vous pouvez augmenter le délai en cliquant sur la clé située dans le coin supérieur droit, si nécessaire. Veuillez inclure le testeur que vous avez choisi dans votre réponse.
Si aucun testeur approprié n'est disponible pour votre choix, vous pouvez également utiliser un interprète en ligne tel que ideone et écrire un petit script dans la langue de l'hôte que les internautes peuvent utiliser pour tester votre soumission.
- Vous pouvez utiliser n'importe quelle fonctionnalité de cette variante, qui n'invoque pas directement le langage hôte (comme les fonctionnalités d'évaluation du code de Perl).
- De même, vous pouvez utiliser tous les modificateurs (si votre version en a), à moins qu'ils n'entraînent une évaluation du code.
- Votre expression rationnelle doit accepter au moins une chaîne S et rejeter au moins une chaîne T , chacune d'une longueur d'au moins 16 caractères et d'au plus 256 caractères, dans un délai raisonnable (pas plus d'une minute de manière significative). S et T peuvent contenir des caractères Unicode qui ne sont pas ASCII, dans la mesure où il est possible de les saisir dans le testeur en ligne. Une telle paire de chaînes sera une clé pour votre soumission.
- Votre expression régulière peut prendre une longueur arbitraire sur toute autre entrée.
Le défi consiste à créer une regex dont la clé est difficile à trouver. Autrement dit, il devrait être difficile de savoir quelle chaîne ne correspond pas ou quelle chaîne correspond (ou même les deux si la regex prend des jours pour se terminer sur toutes les chaînes sauf celle de la clé).
Le défi des voleurs
Tous les utilisateurs, y compris ceux qui ont soumis leurs propres regex, sont encouragés à "craquer" les autres soumissions. Une soumission est fissurée lorsque l'une de ses clés est publiée dans la section des commentaires associée.
Important: assurez-vous que les deux chaînes que vous postez comportent entre 16 et 256 caractères inclus, même si vous pouvez utiliser presque toutes les chaînes pour une partie de la clé.
Si une soumission persiste pendant 72 heures sans être modifiée ni fissurée, l'auteur peut révéler une clé valide en la modifiant dans une étiquette spoiler dans sa réponse. Cela rendra sa réponse "sûre", c'est-à-dire qu'elle ne peut plus être déchiffrée.
Une seule tentative de crack par soumission par utilisateur est autorisée. Par exemple, si je soumets à l'utilisateur X: "Votre clé est 0123456789abcdef
/ fedcba9876543210
." et je me trompe, l'utilisateur X décline ma supposition comme étant incorrecte et je ne serai plus en mesure de soumettre des suppositions supplémentaires pour cette soumission, mais je peux toujours craquer d'autres soumissions (et d'autres peuvent toujours craquer cette soumission).
Les soumissions fissurées sont éliminées du conflit (à condition qu'elles ne soient pas "sûres"). Ils ne doivent pas être édités ou supprimés. Si un auteur souhaite soumettre une nouvelle expression rationnelle, il doit le faire dans une réponse séparée.
Ne craquez pas votre propre soumission!
Remarque: pour les chaînes longues dans les commentaires sans espaces, SE insère des sauts de ligne manuels sous la forme de deux caractères Unicode. Donc, si vous postez une clé dans des backticks tellement longue qu'elle passe entre des caractères ne contenant pas d'espace, il ne sera pas possible de la copier directement dans un testeur de regex. Dans ce cas, fournissez un lien permanent au testeur de regex approprié avec le regex du flic et votre clé - la plupart des testeurs incluent cette fonctionnalité.
Notation
Le score d'un flic sera la taille de leur expression rationnelle en octets (motif plus modificateurs, les délimiteurs potentiels ne sont pas comptés), à condition qu'il ne soit pas fissuré. Le score le plus bas d'une soumission "sûre" l'emportera.
Le score d'un voleur sera le nombre de soumissions qu'ils ont craqué. En cas d'égalité, la taille totale en octets des envois qu'ils ont craqués sera utilisée comme point de départ. Ici, le nombre d'octets le plus élevé gagne.
Comme indiqué ci-dessus, tout policier peut participer en tant que voleur et vice-versa.
Je maintiendrai des classements séparés pour les deux parties du défi.
Classements
Dernière mise à jour: 19/10/2014, 20:33 UTC
Cops:
Les soumissions en italique ne sont pas encore sûres.
- nneonneo , 841 octets
- Wumpus Q. Wumbley , 10 602 octets
- Sp3000 , 52 506 octets
- utilisateur23013 , 53 884 octets
- nneonneo , 656 813 octets
Voleurs:
- utilisateur23013 , fissuré: 11, taille totale: 733 + 30 + 2 447 + 71 + 109 + 121 + 97 + 60 + 141 + 200 127 + 7 563 = 211 499 octets
- nneonneo , fissuré: 10, taille totale: 4 842 + 12 371 + 150 + 3 571 + 96 + 168 + 395 + 1 043 + 458 + 17 372 = 40 466 octets
- Wumpus Q. Wumbley , fissuré: 6, taille totale: 22 + 24 + 158 + 32 + 145 245 + 145 475 = 290 956 octets
- Dennis , fissuré: 2, taille totale: 70 + 73 = 143 octets
- harius , Fissuré : 1, Taille totale: 9 998 octets
- g.rocket , fissuré: 1, taille totale: 721 octets
- stokastic , Fissuré : 1, Taille totale: 211 octets
- Sp3000 , Fissuré : 1, Taille totale: 133 octets
- TwiNight , Fissuré : 1, Taille totale: 39 octets
la source
Réponses:
Regex .NET, 841 octets [Safe!]
Maintenant que j'ai une entrée sécurisée, voyons à quel point je peux faire la regex!
Prettifié :
Fonctionnalités:
Merci à Sp3000 et à user23013 de m'avoir aidé à utiliser la regex .NET.
Après 72 heures, je révèle la clé pour sécuriser cette soumission.
Match :
Non-correspondance :
Aren'tHashFunctionsFun?
Explication:
la source
(?<a>){53}
. Il semble capturer le motif vide dans le groupe nomméa
53 fois. Donc,a=""
puis répétez encore 52 fois? Mais je ne sais pas vraiment si(?<
signifie la même chose dans l'idée de regexp de Microsoft. Leur documentation ne parvient même pas à le mentionner . Si même un concours d'expressions rationnelles se termine avec des extensions non documentées de Microsoft sur les personnes unix, mon existence n'a aucune raison d'être.(?<a>){53}
pousse donc la chaîne vide 53 fois. Vous pouvez faire apparaître la pile avec(?<-a>)
. Espérons que maintenant on comprend pourquoi cette construction est si utile.Regex de base, 656813 octets [safe!]
La regex pour mettre fin à toutes les regex. Un dernier hourra dans la nuit.
Testable sous PCRE, Perl, Python et beaucoup d'autres.
bzip2'd et la version encodée en base64 sur Pastebin: http://pastebin.com/9kprSWBn (Pastebin ne voulait pas de version brute car elle était trop grosse).
Pour vous assurer d’obtenir la bonne expression rationnelle, vous pouvez vérifier que son hachage MD5 est correct.
ou vérifier qu'il commence par
et se termine par
La clé est toujours un agréable 256 octets confortable.
J'ai testé cette expression rationnelle avec Python, mais notez que cette expression rationnelle n'utilise aucune fonctionnalité spéciale de Python. En effet, à l'exception de
(?:)
(en tant que mécanisme de regroupement), il n'utilise en réalité aucune caractéristique particulière d'un moteur d'expression régulière: uniquement les classes de caractères de base, les répétitions et l'ancrage. Ainsi, il devrait être testable dans un grand nombre de moteurs d’expression régulière.En fait, je peux encore augmenter la difficulté, en supposant que quelqu'un ne résout pas instantanément les petits problèmes ... mais je parie que les gens auront des problèmes avec une regex de 1 Go ...
Après 72 heures, cette soumission reste non fissurée! Ainsi, je révèle maintenant la clé pour sécuriser la soumission. Il s'agit de la première soumission sécurisée, après que plus de 30 soumissions aient été déchirées de manière consécutive par des voleurs persistants.
Match :
Massive Regex Problem Survives The Night!
non-match :
rae4q9N4gMXG3QkjV1lvbfN!wI4unaqJtMXG9sqt2Tb!0eonbKx9yUt3xcZlUo5ZDilQO6Wfh25vixRzgWUDdiYgw7@J8LgYINiUzEsIjc1GPV1jpXqGcbS7JETMBAqGSlFC3ZOuCJroqcBeYQtOiEHRpmCM1ZPyRQg26F5Cf!5xthgWNiK!8q0mS7093XlRo7YJTgZUXHEN!tXXhER!Kenf8jRFGaWu6AoQpj!juLyMuUO5i0V5cz7knpDX0nsL
Explication regex:
la source
ECMAScript (10602 octets)
(Remarque sur la langue: je vois beaucoup de messages étiquetés ruby, python ou autre, quand ils n'utilisent vraiment aucune fonctionnalité spécifique à une langue. Celle-ci ne nécessite que
(?!...)
,(?=...)
en plus de POSIX ERE avec des références inverses. Ces fonctionnalités sont probablement présentes dans Le moteur regexp de votre langue préférée, alors ne vous découragez pas à relever le défi, car j’ai choisi d’utiliser le testeur en ligne javascript.)Juste un peu de plaisir, pas aussi difficile en calcul que certains autres.
Testez ici: http://regex101.com/r/kF2oQ3/1
(Grillons gazouillent)
Aucun preneur? C'est étrangement décevant de penser à afficher le spoiler sans aucune preuve que quelqu'un l'ait examiné assez longtemps pour comprendre de quel type de problème il s'agit.
J'écris une explication complète pour poster plus tard, mais je pense que je serais plus heureux si quelqu'un me battait.
Quand je l' ai dit n'a pas été « difficile informatiquement » ... il est une instance d'un problème NP-complet, mais pas un grand exemple.
Astuce: c'est un type de casse-tête papier-crayon. Mais je serais assez impressionné si vous pouvez résoudre celui-ci avec un crayon et du papier seul (après avoir décodé l'expression rationnelle dans un format adapté à l'impression).
Temps spoiler
Il y a plusieurs niveaux de spoilers ici. Si vous n'avez pas encore résolu l'expression rationnelle, vous pouvez réessayer après avoir lu uniquement le premier bloc spoiler. La clé réelle qui correspond à l'expression rationnelle se situe après le dernier bloc spoiler.
Deuxième couche d'altération:
Couche finale d'altération:
Pas de correspondance:
bananabananabanana
correspondance:
ƜpRԱԺեþɋэʌkȿՌOfɄCҷɐխɷլԿѪɮȹÞӿѤNɹЦʞӶdѯχԎԷӺջՒϻЉAɔbУƾձҴԉҨʬHѺӄӾԏxчɎֆFƈɊΞζџiփΨӃϣɂƱϬɣɿqϚɰƐդΦժʮgBƕȴւҵɺҏϯƋՐѠɴҔŋԀɤȻɸaЊѬҥѾҸшɉҶjnMʙƸՊʡEɟμƩςʢϪʊLՅȾɝUʝՉϥҁѧЩӷƆԋҳϙѭϢմԂɥȸhΔԓƛѿբՑҩSDȽԅҠGeωƪՈɅϛɃwҀҤՂΩßɜȶʟɀҹԄҡλѥՃȵҜҎɞԲЭщɌИдϠʄԻʫҝyϼӻҺЋϗѩͽɒʈէϞՀթЪΠƏƣoտʓюrԾϟϤƺϫճлљIնǂƎԳuȺԃQϧԶʁWըիcYЏʘƜ
preuve: http://regex101.com/r/pJ3uM9/2
la source
Arôme Perl, 158 [craquelé]
Voici ma première tentative:
Testez-le sur ideone.com
la source
j'k3j'kj'k3j'kj'kj'k3j'k3j'kj'k3j'kj'kj'k3R-k-<grc>-j'k<grc>-j'k$j'k-k-
correspondance:HOLYCRAPTHATWASEVIL
(correspondance disponible sur ideone.com/pXaGaX pour preuve)[^_^]
(-.-)
(?|...)
est délicate, mais elle est documentée. Voir le passageperlre
qui commence parBe careful when using the branch reset pattern in combination with named captures.
L'astuce est que les groupes qui ont le même numéro mais des noms différents sont le même groupe , tandis que les groupes qui ont le même nom mais des numéros différents sont des groupes différents .Saveur JS, 9998 octets [fissuré]
Testé sur Regex101
La solution que j'ai générée:
la source
M
àŇ
. Mathematica a une fonctionFindHamiltonianCycle
. Nous pouvons transformer cela en un cycle qui traverseŇ -> M
en ajoutant une nouvelle arête et en se connectantŇ
et àM
travers elle. Heureusement, Mathematica trouve un tel cycle instantanément. :)RegEx compatible JS - 3,571 octets [fissuré]
Je… aurai… au moins… un… non soumis… à la soumission. o \ __ / o
Résout virtuellement n'importe quelle corde instantanément. Testable sur n'importe quelle console JS.
+100 représentants à quiconque craque cette bête.
la source
ThatWasActuallyFun
. Non-correspondance :,,;,;,,;,;;;,;,;,;;,,,,;,,,;,;;,,,,,,;;,,,,;;,;,,,;,;;;;,;;,;;,;,,;,,;,;;;,;,;,;;,,,;,;;;;,;,;;;,;,,;,,,;,,,,;,;;;;;;,,,,,;,;,;;;;;,;;;,;;,,,;;;,,;,;;,,,;,,,,,,;,;,,;;,,;;,,,;,;;,,,;,,;;,;,;,;;;;,,;,;,,;;;;;,,;,,;;,,;,,;;,,,,;,,;,,;;,;;;,,,,,;,,,,,,,,;,,,,
.PCRE - 96 octets UTF8, sans délimiteurs, ni drapeaux
[Défait] parce que nneonneo est un sage
Rien à voir ici, avancez ...
la source
So just *SKIPthis one!
:; Pas de correspondance:This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is still not accepted. Snow leopards FTW.
Do just this one!
. Non-correspondance :WellThatWasTooEasy
. (Testé avec Perl 5.12 et Perl 5.18 sur ma machine)RegEx compatible JS - 733 octets [fissuré]
Essayons cela une seconde fois avec les métriques inversées: une expression régulière imposante mais une clé relativement minuscule (le plus important, dans la limite de 256 octets).
Résout virtuellement n'importe quelle corde instantanément. Testé sur RegExr.
Élargi (pour plus de commodité):
Bonne chance à tous. ;)
la source
aaaabaaacaaadaaa
cacdbbcabdeababcdedaacdeecacbdabcd
Saveur .NET, 60 octets [fissuré]
Testé avec Regex Storm .
la source
1234567890012345
. Non-match:1111222233334444
.٠߀०০੦૦୦௦౦೦൦๐໐༠၀႐០᠐᥆᧐᭐᮰᱀᱐꘠꣐꤀꩐0
Donc, ils sont tous considérés comme des chiffres dans .NET ...Saveur Python: 211 octets [craquelés]
Remarque: cette réponse a été publiée avant le changement de règle concernant la longueur maximale de la clé.
Je pensais que je pouvais lancer le processus avec ceci:
(Testé sur RegExr )
la source
RegEx compatible JS - 12,371 octets [fissuré]
Après quelques encouragements de Martin et voyant que d'autres flics soumettent joyeusement des regex de plus de 600 ko, j'ai décidé de franchir le pas de nouveau avec cela (et la version précisée ici ).
Résout virtuellement n'importe quelle corde instantanément. Testable sur n'importe quelle console JS. Malheureusement, sa taille le rend impossible à tester par de nombreux testeurs de regex en ligne.
la source
this was not NP-hard
.nerdnydeprdoypoypwwwdprelwsprwssddayaeeeysyaaaypowroplsaoprdaolasnoylaeaeadeosladnnosyoywyesorlrydwddadoeyponneeyaaapesenaalnneydaewndplredlerwaawlnrssapapaopnrdwnslowdoanlrernpwyyarpprwnrssdlaopsnnrnnnardpaessldalroleswnnooarlpllasapsesaorardwreylayrr
Saveur .NET, 458 octets [fissuré]
Celui-ci est facile. Mais je posterai un plus dur plus tard.
Je pense que je suis assez proche de la réponse cryptographiquement sécurisée.
Testé sur RegexStorm .
la source
1100101001,1100111011
.ThatsWhatIWantedToDo,Nice
RegEx compatible JS - 2 447 octets [fissuré]
Ma dernière tentative.
J'espère que celui-ci durera au moins quelques heures avant d'être craqué. Après cela, j'abandonne. : P
Comme toutes les soumissions précédentes, il est résolu instantanément. Contrairement aux soumissions précédentes, c'est trop long pour RegExr.
Étendu:
la source
aaaabaaacaaadaaa
. Non-match:fdeacdbfbdcadaafdadcfdddfdbffeccbdecaaebfdfcfecbbfad
.(.)
par le caractère correspondant et triez-le en fonction de ce caractère. Cela deviendra évident.Saveur Python (721 octets) [craquelé]
Il est temps de "Parsing Problem v2":
Testé sur Regex101 .
la source
\ZRZTE[1LblHRKl3]?sHcKePT(7tvAE1K4r[zZTE[1LblHRKl3]?sHcKePT(7tvAE1K4rFxRzr
allumettes.a
ne correspond pas?
remplacés par n'importe quel caractère in(?(1)Q)
?
'sSaveur Python (4842 octets) [craquelée]
Merci à @COTO pour ses idées et conseils
J'ai tellement aimé l'idée de 3-SAT de @ COTO que j'ai pensé essayer de créer ma propre regex à partir de celle-ci. Cependant, je ne connais pas très bien la théorie de 3-SAT, je vais donc simplement prier les dieux des GNA et espère que les restrictions seront suffisantes.
J'ai essayé de garder les expressions rationnelles sous 5 000 caractères pour être juste - des expressions rationnelles plus longues seraient impossibles à craquer, mais elles ne seraient pas très amusantes à craquer non plus.
Et le voici sous une forme un peu plus lisible:
Testé sur Regex101 .
la source
x
.0011001101000000000111010001101101011000010011011010000000010001011111000100010000
aaaabaaacaaadaaa
. Non concordance:011100110010001010111101001010010011110010011010110101010001101100101111111111
+0000
. Quelques secondes plus lentement ...Arôme Perl, 133 [craquelé]
Ok, celui-ci devrait être plus difficile à brute:
Et une version plus longue ne faisant pas partie du défi:
Peut être testé sur Regex101 (saveur pcre).
la source
{16,20}
.aaaaa,aaaaaa,aaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
a
s supplémentaires pour une raison quelconque - il devrait y avoir 5,6,75,86,36,91,18a
s entre les virgules: /a
s sont tous des caractères ASCII, mais il existe deux caractères Unicode non imprimables pour chaque saut de ligne manuel.Saveur .NET, 141 octets [fissuré]
Un autre pour les voleurs! Je suis sûr que cela va être fissuré, mais j'espère que la personne qui craque ça va apprendre quelque chose d'intéressant sur la saveur .NET.
Testé sur RegexStorm et RegexHero .
la source
[][][][][][][][]a][][][][][][][][
.That's interesting...
Arôme Python (200127 octets) [craquelé]
Juste pour que nous puissions (espérons-le) voir quelque chose durer une journée, il est temps de sortir les gros canons :)
Le problème avec 3-SAT et le chemin hamiltonien est que la complexité réside dans la taille de la clé. Cette fois, j'ai choisi quelque chose qui dépend de la regex plutôt que de la clé.
La voici: regex . Vous pourriez également trouver ce fichier utile. (Ne vous inquiétez pas, je n'ai rien caché de bizarre là-bas cette fois;))
J'ai utilisé RegexPlanet pour tester celui-ci - il était difficile de trouver quelque chose qui ne tarderait pas: /. Pour vérifier s'il y a une correspondance, voyez si votre chaîne apparaît sous
findall()
.Bonne chance!
la source
d,mE~JZ0,_:3kBdLdgBSzJ!@MLrrAgKsf@Pl35N9bxsIf@ReVU>:YDg`d1MjL@_-
.{ line|fold -w1 >filea; while line >filec; do fold -w1 <filec >fileb; diff -d --old-line-format= --new-line-format= --unchanged-line-format=%L filea fileb >filec;mv filec filea;done;cat filea;} <file1|tr -d $'\n'|head -c64;echo
Python, 145475 octets [fissuré]
Merci au Wumpus de m'avoir appris l'importance de vérifier nos indices :)
Même accord que la dernière solution, mais heureusement pas cassé cette fois. Regex brut: http://pastebin.com/MReS2R1k
EDIT: Ce n'était pas cassé, mais apparemment c'était encore trop facile. Au moins, ça n'a pas été résolu "instantanément";)
la source
1040060321170122554027333022674205250442151362365165773421664173556667110413375720720711725045122733213710556062114131057357354554245723416516004761215632214223735570625116160162051407026445600345370604702671021412723536217011007021752560474402200436670402
minisat2hoursCPU
Implémentation Java Pattern / Oracle (75 caractères / 150 octets UTF-16) [fissuré]
(Nom de code: Bad Coffee 101)
C'est l'
Pattern
objet, avecCANON_EQ
drapeau, à utiliser avecmatches()
(ancre implicite):Testez votre clé ici sur ideone
Il est garanti d'être une clé. Lisez le spoiler si vous voulez une confirmation.
Cela utilise 4 bugs:
CANON_EQ
rétention de texte capturé de la tentative échouée, classe de caractères perdus et dépassement de quantificateur.la source
"(?:e\u0302\u0301\\|\u00ea\u0301\\|\u1ebf\\|\u00ea\\\u0301|e\u0302\\\u0301|\u00ea\\\u0301|\u00ea\u0301\\|\u1ebf\\|e\\\u0302\u0301)\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00"
(forme entre guillemets). Non-correspondance :JavaRegexSoBuggy
. ideone pour match: ideone.com/DEesdkCANON_EQ
développe les caractères précomposés en alternances internes, ce qui les casse de manière hilarante\Q\E
; (2) les longueurs de répétition sont tronquées à 32 bits; (3) il y a quelque chose d'étrange avec le matcher de classe de personnage qui le fait sauter l'alternance (il n'a pas vraiment compris ce que le bogue était exactement).\1
bug de backref . Et oui, il y a un bug dans la classe de personnage. Comment avez-vous compris tout cela en moins de 2 heures?Saveur .NET, 17 372 octets [fissuré]
C'est toujours une version facile.
Il faut plus d'optimisation pour travailler avec des chaînes plus longues.La regex est ici: http://pastebin.com/YPE4zyBB
Ungolfed: http://pastebin.com/PLJp0KhF
Testé sur RegexStorm et ce blog et RegExLib (avec toutes les options décochées).
la source
Ľê¯6Aĝ4aþĀ,lŃŝĿBİŢŞĩï
(échappé:)\u013d\xea\xaf6A\u011d4a\xfe\u0100,l\u0143\u015d\u013fB\u0130\u0162\u015e\u0129\xef
.VeryNiceMultiplier
Saveur ECMAScript, 30 octets [fissuré]
En voici une assez simple à craquer pour les voleurs. Conceptuellement, ce n'est pas trop difficile, mais cela pourrait nécessiter un peu de recherche (ou de script). Je n'ai pas l'intention de m'inscrire au classement, mais si quelqu'un le déchiffre dans les 72 heures, cela comptera pour le score du voleur.
Testé sur Regex101 et RegExr en utilisant Chrome.
Eh bien, c'était rapide!
la source
wqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBnw==
aaaabaaacaaadaaa
.*
dans le lookahead. Bonne prise. Devrait avoir testé plus en profondeur.Rubis , 24 octets [craquelés]
la source
[]\\[]
;))soylentgreenispeople
. Le match disponible sur rubular.com/r/TCqjcaGsU1 n’a pas été posté ici en raison de la façon dont le système de commentaires gère les mots longs.PHP, 168 octets [fissuré par nneonneo ]
Voici une démo regex .
PS Ce jeu est difficile.
la source
\1?!($!?)?!(?=(?1))!?
.IncrementalRegexTestingWorks
PCRE (1043 octets) [fissuré]
Après que les expressions rationnelles générées de manière aléatoire m’aient échoué (les idées étaient bonnes, mais je ne pouvais pas générer d’instances de problèmes adéquates), j’ai décidé de fabriquer à la main celui-ci. Je le surnomme "beaucoup de règles à satisfaire".
Et élargi:
Testé sur Regex101 - en fonction de votre ordinateur, vous devrez peut-être augmenter le temps d'exécution maximal.
la source
[((({.[.[](){{}{].{.(({){(.[]()....}}].{{[[....).[..]()(}..[..]([....(([{((({).](){.{}{}{}....}[[()[}}][{{[({[[[.]]}()]].{}.]{[..]{.[]]}}}())))(())[(.].{[.{[[..[()].()}{{.[...[}{.]..)]...{.])))).}}..([......{.....[.]}[...}.{[.}...}})}.))).]}}]]]}]]].)]]..}
. Non-match:WhatANastySetOfRulesYouHave
.(?=(.*\[.*\(.*\{){5,9}.*)
, vous n'aurez pas besoin d'augmenter le temps d'exécution maximum (même résultat) - les correspondances seront instantanées..NET flavour (7563 bytes) [craquelé]
Inspiré par l'idée de @ user23013
Nous ne pouvons pas avoir assez de problèmes NP-complets! Voici la version développée:
Testé sur Regex Hero (Regex Storm expire pour celui-ci).
la source
01111111111111111111111011001111111111011111111111111111111101111111111
11111111111111111111011111111000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000
(supprimer ces espaces). Non-match:KnapsackAlgorithm
. Il n’est pas facile d’installer Silverlight sur ma machine Ubuntu. Mais cela a fonctionné sur un autre testeur.Saveur .NET (52506 octets)
Somme de sous-ensemble, édition de luxe.
Regex ici , version développée ici , testée sur RegExLib et Regex Hero
la source
Saveur .NET, 53 884 octets [sûr]
Généré par GnuPG! Et extrait par pgpdump. Il s'agit de 1536 bits, car des versions plus longues ont échoué sur le testeur en ligne.
La regex est ici: http://pastebin.com/PkJnj9ME
Testé sur RegExLib (aucune option sélectionnée). J'espère que je ne leur ai pas causé trop de problèmes.
Vous voulez probablement commencer par craquer la version facile . C'est la même chose que celle-ci, à l'exception d'une clé beaucoup plus courte.
Vous voulez probablement aussi ce numéro:
La clé
Rencontre:
Non-correspondance:
Les nombres premiers:
L'explication est dans la version facile .
Le script générateur (en CJam)
L'entrée devrait être le nombre ci-dessus.
Une fois que vous avez terminé, la solution peut être générée par ce programme:
L'entrée devrait être deux entiers.
la source
PHP, 395 octets [fissuré par nneonneo ]
Un meilleur puzzle que ma dernière entrée.
Remarque: la clé correspondante est multiligne, chaque ligne étant séparée par le caractère de nouvelle ligne
\n
. Reconstruisez de l'art ASCII!Voici une démo regex .
la source
202e272d207768616c650a2d3a3a2e2f202f205f2e27273a2e0a2d3a2c2020285f5f2e2e27602020205c0a2020205c202020202020202020202e207c0a602c2e5f5f2e2020202c5f5f2e27272f0a2020202020202d2e5f2f5f2e2d5f5f5f2e2d
(codé en hexadécimal). Non-correspondance :IDon'tThinkIGotTheRightPicture
. Espace de.-'
au début.'-
. Avec le recul, le premier est beaucoup plus plausible pour l'art ASCII;)Saveur de Perl, 97 [craquelé]
Je crains que cela ne soit trop facile en raison de la limite de longueur de clé.
Si vous pensez avoir compris l'idée, essayez la version plus longue (ne fait pas partie du défi):
la source
aaaaaaa,a,aa,aaa,aaaaaaa
. Non-match:aaaabaaacaaadaaa
.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,a,aa,
(supprimez ces caractères)aaaa,aaaaaaa,aaaaaaaa,aaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaa,
(supprimez ces caractères)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
.aaaabaaacaaadaaa
(remove these characters)
.)