Nota : Este desafío ahora está cerrado. Cualquier presentación de policías futuros no será considerada para la respuesta aceptada. Esto es para garantizar que nadie pueda publicar una expresión regular muy simple en el futuro que solo permanezca sin descifrar porque ya nadie está interesado en el desafío.
El desafío de los policías
Debe escribir una expresión regular breve y ofuscada, que satisfaga la siguiente especificación:
Puede elegir cualquier sabor que se pueda probar libremente en línea. Hay una buena lista de probadores en línea en StackOverflow . En particular, Regex101 debería ser bueno para comenzar, ya que admite los sabores PCRE, ECMAScript y Python. Puede aumentar el límite de tiempo de espera haciendo clic en la llave en la esquina superior derecha si es necesario. Incluya el probador que elija en su respuesta.
Si no hay un probador adecuado disponible para su gusto, también puede usar un intérprete en línea como ideone y escribir un pequeño guión en el idioma anfitrión que las personas pueden usar para probar su presentación.
- Puede usar cualquier función de ese sabor, que no invoque directamente el idioma del host (como las funciones de evaluación de código de Perl).
- Del mismo modo, puede usar cualquier modificador (si su sabor los tiene), a menos que resulten en una evaluación del código.
- Su expresión regular debe aceptar al menos una cadena S y rechazar al menos una cadena T , cada una de las cuales tiene al menos 16 y no más de 256 caracteres de longitud, en un período de tiempo razonable (no significativamente más de un minuto). S y T pueden contener caracteres Unicode que no son ASCII, siempre que haya una forma de ingresarlos en el probador en línea. Cualquier par de cadenas de este tipo será clave para su envío.
- Su expresión regular puede tomar arbitrariamente mucho tiempo en cualquier otra entrada.
El núcleo del desafío es crear una expresión regular cuya clave sea difícil de encontrar. Es decir, debería ser difícil saber con qué cadena no coincide o con qué cadena coincide (o potencialmente incluso ambas si la expresión regular tarda días en completarse excepto las cadenas de la tecla).
El desafío de los ladrones
Se alienta a todos los usuarios, incluidos aquellos que han enviado sus propias expresiones regulares, a "descifrar" otras presentaciones. Un envío se agrieta cuando una de sus claves se publica en la sección de comentarios asociados.
Importante: asegúrese de que ambas cadenas que publique tengan entre 16 y 256 caracteres inclusive, incluso si se pudiera usar casi cualquier cadena para una parte de la clave.
Si un envío persiste durante 72 horas sin ser modificado o agrietado, el autor puede revelar una clave válida editándola en una etiqueta de spoiler en su respuesta. Esto hará que su respuesta sea "segura", es decir, ya no se puede descifrar.
Solo se permite un intento de craqueo por envío por usuario. Por ejemplo, si envío al usuario X: "Su clave es 0123456789abcdef
/ fedcba9876543210
". y me equivoco, el usuario X rechazará mi suposición como incorrecta y ya no podré enviar conjeturas adicionales para ese envío, pero aún puedo descifrar otros envíos (y otros aún pueden descifrar ese envío).
Los envíos craqueados se eliminan de la contienda (siempre que no sean "seguros"). No deben ser editados o eliminados. Si un autor desea enviar una nueva expresión regular, debe hacerlo en una respuesta por separado.
¡No rompas tu propia sumisión!
Nota: Para cadenas largas en los comentarios sin espacios, SE inserta saltos de línea manuales en forma de dos caracteres Unicode. Por lo tanto, si publica una clave en backticks que es tan larga que se ajusta entre caracteres que no son espacios, no será posible copiar la clave directamente en un probador de expresiones regulares. En este caso, proporcione un enlace permanente al probador de expresiones regulares correspondiente con la expresión regular del policía y su clave; la mayoría de los probadores incluyen esta función.
Puntuación
El puntaje de un policía será el tamaño de su expresión regular en bytes (el patrón más los modificadores, los delimitadores potenciales no se cuentan), siempre que no haya sido descifrado. Ganará el puntaje más bajo de una presentación "segura".
El puntaje de un ladrón será la cantidad de envíos que descifraron. En caso de empate, el tamaño total de bytes de los envíos que descifraron se usará como un desempate. Aquí, el conteo de bytes más alto gana.
Como se indicó anteriormente, cualquier policía puede participar como ladrón y viceversa.
Mantendré tablas de clasificación separadas para las dos partes del desafío.
Tablas de clasificación
Última actualización: 19/10/2014, 20:33 UTC
Policías:
Los envíos en cursiva aún no son seguros.
- nneonneo , 841 bytes
- Wumpus Q. Wumbley , 10,602 bytes
- Sp3000 , 52,506 bytes
- user23013 , 53,884 bytes
- nneonneo , 656.813 bytes
Ladrones:
- user23013 , Agrietado: 11, Tamaño Total: 733 + 30 + 2.447 + 71 + 109 + 121 + 97 + 60 + 141 + 200,127 + 7,563 = 211,499 bytes
- nneonneo , Agrietado: 10, Tamaño total: 4,842 + 12,371 + 150 + 3,571 + 96 + 168 + 395 + 1,043 + 458 + 17,372 = 40,466 bytes
- Wumpus Q. Wumbley , Agrietado: 6, Tamaño total: 22 + 24 + 158 + 32 + 145,245 + 145,475 = 290,956 bytes
- Dennis , Agrietado: 2, Tamaño total: 70 + 73 = 143 bytes
- harius , Cracked: 1, Tamaño total: 9,998 bytes
- g.rocket , Agrietado: 1, Tamaño total: 721 bytes
- stokastic , Cracked: 1, Tamaño total: 211 bytes
- Sp3000 , Agrietado: 1, Tamaño total: 133 bytes
- TwiNight , Cracked: 1, Tamaño total: 39 bytes
fuente
Respuestas:
.NET regex, 841 bytes [¡Seguro!]
Ahora que tengo una entrada segura, ¡veamos cuán pequeño puedo hacer la expresión regular!
Prettified :
caracteristicas:
Gracias a Sp3000 y user23013 por informarme sobre .NET regex.
Después de 72 horas, estoy revelando la clave para que esta presentación sea segura.
Partido :
No partido :
Aren'tHashFunctionsFun?
Explicación:
fuente
(?<a>){53}
. Parece estar capturando el patrón vacío en un grupo con nombrea
53 veces. Entonces, establezcaa=""
y repita 52 veces más. Pero realmente no sé si(?<
significa lo mismo en la idea de Microsoft de una expresión regular. Su documentación ni siquiera lo menciona . Si incluso un concurso regexp termina con extensiones indocumentadas de Microsoft sobre las personas de Unix, mi existencia no tiene ningún propósito.(?<a>){53}
empuja la cadena vacía 53 veces. Puedes reventar la pila usando(?<-a>)
. Esperemos que ahora esté claro por qué esta construcción es tan útil.Basic Regex, 656813 bytes [¡seguro!]
La expresión regular para finalizar todas las expresiones regulares. Un último hurra en la noche.
Probable bajo PCRE, Perl, Python y muchos otros.
bzip2'd y la versión codificada en base64 en Pastebin: http://pastebin.com/9kprSWBn (Pastebin no quería la versión en bruto porque era demasiado grande).
Para asegurarse de obtener la expresión regular correcta, puede verificar que su hash MD5 sea
o comprueba que comienza con
y termina con
La clave sigue siendo un agradable y cómodo 256 bytes.
Probé esta expresión regular con Python, pero tenga en cuenta que esta expresión regular no utiliza ninguna característica especial de Python. De hecho, con la excepción de
(?:)
(como mecanismo de agrupación), en realidad no utiliza características especiales de ningún motor de expresiones regulares: solo clases básicas de caracteres, repeticiones y anclaje. Por lo tanto, debe ser comprobable en una gran cantidad de motores de expresión regular.Bueno, en realidad, todavía puedo aumentar la dificultad, suponiendo que alguien no solo resuelva instantáneamente los problemas más pequeños ... sino que apuesto a que las personas tendrán problemas con una expresión regular de 1GB ...
¡Después de 72 horas, esta presentación permanece sin descifrar! Por lo tanto, ahora estoy revelando la clave para hacer que la presentación sea segura. Esta es la primera presentación segura, después de que más de 30 presentaciones fueron descifradas seguidas por ladrones persistentes.
Coincidencia :
Massive Regex Problem Survives The Night!
No coincidencia :
rae4q9N4gMXG3QkjV1lvbfN!wI4unaqJtMXG9sqt2Tb!0eonbKx9yUt3xcZlUo5ZDilQO6Wfh25vixRzgWUDdiYgw7@J8LgYINiUzEsIjc1GPV1jpXqGcbS7JETMBAqGSlFC3ZOuCJroqcBeYQtOiEHRpmCM1ZPyRQg26F5Cf!5xthgWNiK!8q0mS7093XlRo7YJTgZUXHEN!tXXhER!Kenf8jRFGaWu6AoQpj!juLyMuUO5i0V5cz7knpDX0nsL
Explicación de expresiones regulares:
fuente
ECMAScript (10602 bytes)
(Nota de idioma: veo muchas publicaciones etiquetadas como ruby, o python, o lo que sea, cuando realmente no usan ninguna característica específica del idioma. Esta solo requiere
(?!...)
y(?=...)
encima de POSIX ERE con referencias. Es probable que esas características estén en el motor de expresiones regulares de su idioma favorito, así que no se desanime de probar el desafío porque elegí usar el probador en línea de JavaScript).Solo un poco de diversión, no tan computacionalmente difícil como algunos de los otros.
Prueba aquí: http://regex101.com/r/kF2oQ3/1
(grillos chirriando)
No hay tomadores? Es extrañamente decepcionante pensar en publicar el spoiler sin evidencia de que alguien lo haya mirado lo suficiente como para comprender qué tipo de problema es.
Estoy escribiendo una explicación completa para publicar más tarde, pero creo que sería más feliz si alguien me ganara.
Cuando dije que no era "computacionalmente difícil" ... es una instancia de un problema de NP completo, pero no una gran instancia.
Sugerencia: es un tipo de rompecabezas de lápiz y papel. Pero estaría bastante impresionado si puede resolver esto solo con lápiz y papel (después de decodificar la expresión regular en una forma adecuada para imprimir).
Tiempo de spoiler
Hay múltiples niveles de spoilers aquí. Si aún no resolvió la expresión regular, es posible que desee volver a intentarlo después de leer solo el primer bloque de spoiler. La clave real que coincide con la expresión regular es después del último bloque de spoiler.
Segunda capa de deterioro:
Capa final de deterioro:
No coincidencia:
bananabananabanana
coincidencia:
Ɯ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ЏʘƜ
prueba: http://regex101.com/r/pJ3uM9/2
fuente
Sabor Perl, 158 [agrietado]
Aquí está mi primer intento:
Pruébalo en ideone.com
fuente
j'k3j'kj'k3j'kj'kj'k3j'k3j'kj'k3j'kj'kj'k3R-k-<grc>-j'k<grc>-j'k$j'k-k-
No coincidencia:HOLYCRAPTHATWASEVIL
(coincidencia disponible en ideone.com/pXaGaX para prueba)[^_^]
(-.-)
(?|...)
es complicado, pero está documentado. Vea el pasajeperlre
que comienza conBe careful when using the branch reset pattern in combination with named captures.
El truco es que los grupos que tienen el mismo número pero nombres diferentes son el mismo grupo , mientras que los grupos que tienen el mismo nombre pero números diferentes son grupos diferentes .Sabor JS, 9998 bytes [agrietado]
Probado en Regex101
La solución que he generado:
fuente
M
aŇ
. Mathematica tiene una funciónFindHamiltonianCycle
. Podemos convertir esto en un ciclo que atravieseŇ -> M
agregando un nuevo borde y conectandoŇ
y aM
través de él. Afortunadamente, Mathematica encuentra ese ciclo al instante. :)RegEx compatible con JS - 3,571 bytes [agrietado]
Yo ... tendré ... al menos ... uno ... sin descifrar ... sumisión. o \ __ / o
Se resuelve en prácticamente cualquier cadena instantáneamente. Probable en cualquier consola JS.
+100 repeticiones a cualquiera que descifre a esta bestia.
fuente
ThatWasActuallyFun
. No coincidencia :,,;,;,,;,;;;,;,;,;;,,,,;,,,;,;;,,,,,,;;,,,,;;,;,,,;,;;;;,;;,;;,;,,;,,;,;;;,;,;,;;,,,;,;;;;,;,;;;,;,,;,,,;,,,,;,;;;;;;,,,,,;,;,;;;;;,;;;,;;,,,;;;,,;,;;,,,;,,,,,,;,;,,;;,,;;,,,;,;;,,,;,,;;,;,;,;;;;,,;,;,,;;;;;,,;,,;;,,;,,;;,,,,;,,;,,;;,;;;,,,,,;,,,,,,,,;,,,,
.PCRE - 96bytes UTF8, sin delimitadores, sin banderas
[Derrotado] porque nneonneo es un sabio
Nada que ver aquí, muévanse...
fuente
So just *SKIPthis one!
:; Sin partido: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!
. No coincidencia :WellThatWasTooEasy
. (Probado con Perl 5.12 y Perl 5.18 en mi máquina)RegEx compatible con JS - 733 bytes [agrietado]
Intentemos esto por segunda vez con las métricas invertidas: una expresión regular enorme pero una clave relativamente pequeña (lo más importante, dentro del límite de 256 bytes).
Se resuelve en prácticamente cualquier cadena instantáneamente. Probado en RegExr.
Ampliado (por conveniencia):
La mejor de las suertes para todos. ;)
fuente
aaaabaaacaaadaaa
, no coincidencia:cacdbbcabdeababcdedaacdeecacbdabcd
.NET sabor, 60 bytes [agrietado]
Probado con Regex Storm .
fuente
1234567890012345
. No coincidencia:1111222233334444
.٠߀०০੦૦୦௦౦೦൦๐໐༠၀႐០᠐᥆᧐᭐᮰᱀᱐꘠꣐꤀꩐0
Así que todos estos son considerados dígitos en .NET ...Sabor Python: 211 bytes [agrietado]
Nota: esta respuesta se publicó antes del cambio de regla sobre la longitud máxima de la clave
Pensé que haría rodar la pelota con esto:
(Probado en RegExr )
fuente
RegEx compatible con JS: 12,371 bytes [agrietado]
Después de un poco de aliento por parte de Martin, y al ver que otros policías están felizmente enviando expresiones regulares de más de 600 KB, decidí dar el paso una vez más con esto (y la versión prettified aquí ).
Se resuelve en prácticamente cualquier cadena instantáneamente. Probable en cualquier consola JS. Desafortunadamente, el tamaño hace que sea imposible de probar por muchos probadores de expresiones regulares en línea.
fuente
this was not NP-hard
. No partido :nerdnydeprdoypoypwwwdprelwsprwssddayaeeeysyaaaypowroplsaoprdaolasnoylaeaeadeosladnnosyoywyesorlrydwddadoeyponneeyaaapesenaalnneydaewndplredlerwaawlnrssapapaopnrdwnslowdoanlrernpwyyarpprwnrssdlaopsnnrnnnardpaessldalroleswnnooarlpllasapsesaorardwreylayrr
Sabor .NET, 458 bytes [agrietado]
Este es fácil. Pero publicaré uno más difícil más tarde.
Creo que estoy bastante cerca de la respuesta criptográficamente segura.
Probado en RegexStorm .
fuente
1100101001,1100111011
. No partido :ThatsWhatIWantedToDo,Nice
RegEx compatible con JS: 2,447 bytes [agrietado]
Mi último intento.
Espero que este dure al menos unas pocas horas antes de que se rompa. Después de eso, me rindo. :PAGS
Como todas las presentaciones anteriores, se resuelve instantáneamente. A diferencia de las presentaciones anteriores, es demasiado largo para RegExr.
Expandido:
fuente
aaaabaaacaaadaaa
. No coincidencia:fdeacdbfbdcadaafdadcfdddfdbffeccbdecaaebfdfcfecbbfad
.(.)
con el personaje coincidente, y ordene por ese personaje, y será obvio.Sabor Python (721 bytes) [agrietado]
Es hora del "Problema de análisis v2":
Probado en Regex101 .
fuente
\ZRZTE[1LblHRKl3]?sHcKePT(7tvAE1K4r[zZTE[1LblHRKl3]?sHcKePT(7tvAE1K4rFxRzr
partidos.a
no coincide?
reemplazados por cualquier personaje en(?(1)Q)
?
'sSabor Python (4842 bytes) [agrietado]
Gracias a @COTO por sus ideas y consejos.
Me gustó tanto la idea 3-SAT de @ COTO que pensé que intentaría hacer mi propia expresión regular basada en ella. Sin embargo, no estoy tan familiarizado con la teoría de 3-SAT, así que solo voy a rezar a los dioses del RNG y espero tener suficientes restricciones.
Traté de mantener la expresión regular de menos de 5000 caracteres para ser justa: obviamente, las expresiones regulares más largas serían imposibles de descifrar, pero tampoco serían muy divertidas de descifrar.
Y aquí está en una forma que es un poco más fácil de leer:
Probado en Regex101 .
fuente
x
. No partido:0011001101000000000111010001101101011000010011011010000000010001011111000100010000
aaaabaaacaaadaaa
. No partido:011100110010001010111101001010010011110010011010110101010001101100101111111111
+0000
. Solo unos segundos más lento ...Sabor Perl, 133 [agrietado]
Bien, este debería ser más difícil de fuerza bruta:
Y una versión más larga, que no forma parte del desafío:
Se puede probar en Regex101 (sabor pcre).
fuente
{16,20}
.aaaaa,aaaaaa,aaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaa
coinciden:aaaaaaaaaaaaaaaa
a
s adicionales por alguna razón: debería haber 5,6,7,85,36,91,18a
s entre las comas: /a
s son todos ASCII, pero hay dos caracteres Unicode no imprimibles para cada salto de línea manual que hace SE.Sabor .NET, 141 bytes [agrietado]
¡Otro para los ladrones! Estoy seguro de que esto se descifrará, pero espero que la persona que lo descifre aprenda algo interesante sobre el sabor de .NET en el proceso.
Probado en RegexStorm y RegexHero .
fuente
[][][][][][][][]a][][][][][][][][
. No partido:That's interesting...
Sabor Python (200127 bytes) [agrietado]
Solo para que podamos (con suerte) ver algo durar un día, es hora de sacar las armas grandes :)
El problema con la ruta 3-SAT y Hamiltoniana es que la complejidad está en términos del tamaño de la clave. Esta vez he elegido algo que depende de la expresión regular, en lugar de la clave.
Aquí está: regex . También puede encontrar este archivo útil. (No te preocupes, no he escondido nada extraño allí esta vez;))
Utilicé RegexPlanet para probar este, fue difícil encontrar algo que no se agotara : /. Para verificar si hubo una coincidencia, vea si su cadena aparece debajo
findall()
.¡Buena suerte!
fuente
d,mE~JZ0,_:3kBdLdgBSzJ!@MLrrAgKsf@Pl35N9bxsIf@ReVU>:YDg`d1MjL@_-
. No partido:{ 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 bytes [agrietado]
Gracias a Wumpus por enseñarme la importancia de revisar nuestros índices :)
El mismo trato que la última solución, solo espero que no se rompa esta vez. Regex sin formato: http://pastebin.com/MReS2R1k
EDITAR: No estaba roto, pero aparentemente todavía era demasiado fácil. Al menos no se resolvió "al instante";)
fuente
1040060321170122554027333022674205250442151362365165773421664173556667110413375720720711725045122733213710556062114131057357354554245723416516004761215632214223735570625116160162051407026445600345370604702671021412723536217011007021752560474402200436670402
Partido:minisat2hoursCPU
Implementación de Java Pattern / Oracle (75 caracteres / 150 bytes UTF-16) [agrietado]
(Nombre en clave: Bad Coffee 101)
Este es el
Pattern
objeto, conCANON_EQ
bandera, que se utilizará conmatches()
(ancla implícita):Prueba tu clave aquí en ideone
Se garantiza que habrá una clave. Lea el spoiler si desea alguna confirmación.
Esto hace uso de 4 errores:
CANON_EQ
retención de texto capturado de intento fallido, pérdida de clase de caracteres y desbordamiento del cuantificador.fuente
"(?: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"
(forma citado). No coincidencia :JavaRegexSoBuggy
. ideone for match: ideone.com/DEesdkCANON_EQ
expande los caracteres precompuestos en alternancias internas, que se rompen hilarantemente en el interior\Q\E
; (2) las longitudes de repetición se truncan a 32 bits; (3) está ocurriendo algo extraño con el clasificador de clase de personaje que hace que se salte la alternancia (no se dio cuenta de qué era exactamente el error).\1
error de backref . Y sí, hay un error en la clase de personaje. ¿Cómo resolviste todo esto en menos de 2 horas?Sabor .NET, 17.372 bytes [agrietado]
Esta sigue siendo una versión fácil.
Necesita más optimización para trabajar con cadenas más largas.La expresión regular está aquí: http://pastebin.com/YPE4zyBB
Sin golf: http://pastebin.com/PLJp0KhF
Probado en RegexStorm y este blog y RegExLib (con todas las opciones sin marcar ).
fuente
Ľê¯6Aĝ4aþĀ,lŃŝĿBİŢŞĩï
(escapado:)\u013d\xea\xaf6A\u011d4a\xfe\u0100,l\u0143\u015d\u013fB\u0130\u0162\u015e\u0129\xef
. No partido :VeryNiceMultiplier
Sabor ECMAScript, 30 bytes [agrietado]
Aquí hay uno bastante simple para que los ladrones quiebren. Conceptualmente no es demasiado difícil, pero puede requerir un poco de investigación (o secuencias de comandos). No tengo la intención de enumerarme en la tabla de clasificación, pero si alguien lo descifra dentro de las 72 horas, esto contará para la puntuación de su ladrón.
Probado en Regex101 y RegExr con Chrome.
Bueno, eso fue rápido!
fuente
wqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBnw==
No partido:aaaabaaacaaadaaa
.*
en el futuro. Buena atrapada. Debería haber probado más a fondo.Con sabor a rubí , 24 bytes [agrietado]
fuente
[]\\[]
;))soylentgreenispeople
. Coincidencia disponible en rubular.com/r/TCqjcaGsU1 no publicado aquí debido a cómo el sistema de comentarios maneja palabras largas.PHP, 168 bytes [descifrado por nneonneo ]
Aquí hay una demostración de expresiones regulares .
PD: este juego es difícil.
fuente
\1?!($!?)?!(?=(?1))!?
. No partido :IncrementalRegexTestingWorks
PCRE (1043 bytes) [agrietado]
Después de que las expresiones regulares generadas aleatoriamente me fallaron (las ideas eran buenas, pero no pude generar instancias de problemas adecuadas), decidí crear esta a mano. Yo lo llamo "Un montón de reglas para satisfacer".
Y ampliado:
Probado en Regex101 : dependiendo de su computadora, puede necesitar aumentar el tiempo máximo de ejecución.
fuente
[((({.[.[](){{}{].{.(({){(.[]()....}}].{{[[....).[..]()(}..[..]([....(([{((({).](){.{}{}{}....}[[()[}}][{{[({[[[.]]}()]].{}.]{[..]{.[]]}}}())))(())[(.].{[.{[[..[()].()}{{.[...[}{.]..)]...{.])))).}}..([......{.....[.]}[...}.{[.}...}})}.))).]}}]]]}]]].)]]..}
. No coincidencia:WhatANastySetOfRulesYouHave
.(?=(.*\[.*\(.*\{){5,9}.*)
, entonces no necesitará aumentar el tiempo máximo de ejecución (mismo resultado): las coincidencias serán instantáneas.Sabor .NET (7563 bytes) [agrietado]
Inspirado en la idea de @ user23013
¡Simplemente no podemos tener suficientes problemas de NP completo! Aquí está la versión ampliada:
Probado en Regex Hero (Regex Storm agota el tiempo de espera para este).
fuente
01111111111111111111111011001111111111011111111111111111111101111111111
11111111111111111111011111111000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000
(eliminar esos espacios). No coincidencia:KnapsackAlgorithm
. No es fácil instalar Silverlight en mi máquina Ubuntu. Pero esto funcionó en algún otro probador.Sabor .NET (52506 bytes)
Subconjunto suma, edición de lujo.
Regex aquí , versión ampliada aquí , probado en RegExLib y Regex Hero
fuente
Sabor .NET, 53,884 bytes [seguro]
Generado por GnuPG! Y extraído por pgpdump. Es de 1536 bits porque las versiones más largas fallaron en el probador en línea.
La expresión regular está aquí: http://pastebin.com/PkJnj9ME
Probado en RegExLib (sin opciones seleccionadas). Espero no haberles causado demasiados problemas.
Probablemente quieras descifrar la versión fácil primero. Es lo mismo que este, excepto por tener una clave mucho más corta.
Probablemente también quieras este número:
La clave
Partido:
No partido:
Los números primos:
La explicación está en la versión fácil .
El script generador (en CJam)
La entrada debe ser el número anterior.
Una vez que haya terminado, la solución puede ser generada por este programa:
La entrada debe ser dos enteros.
fuente
PHP, 395 bytes [descifrado por nneonneo ]
Un rompecabezas mejor que mi última entrada.
Nota: La clave coincidente es multilínea, con cada línea separada por el nuevo carácter de línea
\n
. ¡Reconstruye algo de arte ASCII!Aquí hay una demostración de expresiones regulares .
fuente
202e272d207768616c650a2d3a3a2e2f202f205f2e27273a2e0a2d3a2c2020285f5f2e2e27602020205c0a2020205c202020202020202020202e207c0a602c2e5f5f2e2020202c5f5f2e27272f0a2020202020202d2e5f2f5f2e2d5f5f5f2e2d
(codificado en hexadecimal). No coincidencia :IDon'tThinkIGotTheRightPicture
. Espacio de.-'
al principio.'-
. En retrospectiva, lo primero es mucho más plausible para el arte ASCII;)Sabor Perl, 97 [agrietado]
Me temo que esto será demasiado fácil debido al límite de longitud de la clave.
Si cree que se le ocurrió la idea, pruebe la versión más larga (que no forma parte del desafío)
fuente
aaaaaaa,a,aa,aaa,aaaaaaa
. No coincidencia:aaaabaaacaaadaaa
.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,a,aa,
(eliminar estos caracteres)aaaa,aaaaaaa,aaaaaaaa,aaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaa,
(eliminar estos caracteres)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
. No partido:aaaabaaacaaadaaa
(remove these characters)
.)