Nota : Este desafio está encerrado. Qualquer envio de futuros policiais não será considerado para a resposta aceita. Isso é para garantir que ninguém possa postar uma regex muito simples no futuro que só permaneça sem quebra, porque ninguém mais está interessado no desafio.
O desafio da polícia
Você deve escrever um regex curto e ofuscado, atendendo às seguintes especificações:
Você pode escolher qualquer sabor que seja livremente testável on-line. Há uma boa lista de testadores on - line no StackOverflow . Em particular, o Regex101 deve ser bom para você começar, pois suporta os sabores PCRE, ECMAScript e Python. Você pode aumentar o limite de tempo limite, clicando na chave no canto superior direito, se necessário. Inclua o testador que você escolher na sua resposta.
Se nenhum testador adequado estiver disponível para o seu tipo de escolha, você também pode usar um intérprete on-line como o ideone e escrever um pequeno script no idioma do host que as pessoas possam usar para testar seu envio.
- Você pode usar qualquer recurso desse tipo, que não invoque diretamente o idioma do host (como os recursos de avaliação de código do Perl).
- Da mesma forma, você pode usar quaisquer modificadores (se houver algum sabor), a menos que resultem na avaliação do código.
- Seu regex deve aceitar pelo menos uma sequência S e rejeitar pelo menos uma sequência T , cada uma com pelo menos 16 e não mais de 256 caracteres, em um período de tempo razoável (não significativamente maior que um minuto). S e T podem conter caracteres Unicode que não são ASCII, desde que haja uma maneira de inseri-los no testador online. Qualquer par de strings será a chave para o envio.
- Sua regex pode demorar arbitrariamente em qualquer outra entrada.
O núcleo do desafio é criar uma regex cuja chave é difícil de encontrar. Ou seja, deve ser difícil dizer qual string não corresponde ou qual string corresponde (ou potencialmente ambas, se a regex levar dias para terminar em todas, exceto as cadeias de caracteres da chave).
O desafio dos ladrões
Todos os usuários, incluindo aqueles que enviaram suas próprias regex (s), são incentivados a "quebrar" outros envios. Um envio é quebrado quando uma de suas chaves é postada na seção de comentários associados.
Importante: Certifique-se de que as duas seqüências postadas tenham entre 16 e 256 caracteres, mesmo que quase todas as sequências possam ser usadas para uma parte da chave.
Se um envio persistir por 72 horas sem ser modificado ou quebrado, o autor poderá revelar uma chave válida editando-a em uma tag de spoiler em sua resposta. Isso tornará sua resposta "segura", ou seja, não poderá mais ser quebrada.
Apenas uma tentativa de cracking por envio por usuário é permitida. Por exemplo, se eu enviar ao usuário X: "Sua chave é 0123456789abcdef
/ fedcba9876543210
." e eu estou errado, o usuário X rejeitará meu palpite como incorreto e não poderei mais enviar palpites adicionais para esse envio, mas ainda posso quebrar outros envios (e outros ainda podem quebrar esse envio).
Os envios rachados são eliminados da disputa (desde que não sejam "seguros"). Eles não devem ser editados ou excluídos. Se um autor deseja enviar uma nova regex, deve fazê-lo em uma resposta separada.
Não decifre sua própria submissão!
Nota: Para seqüências longas nos comentários sem espaços, o SE insere quebras de linha manuais na forma de dois caracteres Unicode. Portanto, se você postar uma chave nos backticks, que é tão longa que se entrelaça entre caracteres que não são do espaço, não será possível copiar a chave novamente em um testador de regex. Nesse caso, forneça um link permanente ao testador de regex relevante com o regex do policial e sua chave - a maioria dos testadores inclui esse recurso.
Pontuação
A pontuação de um policial será o tamanho de sua regex em bytes (padrão mais modificadores, delimitadores em potencial não são contados), desde que não tenha sido decifrado. A pontuação mais baixa de um envio "seguro" será vencedora.
A pontuação de um ladrão será o número de envios que eles quebraram. Em caso de empate, o tamanho total de bytes dos envios que eles quebraram será usado como desempate. Aqui, a maior contagem de bytes vence.
Como mencionado acima, qualquer policial pode participar como assaltante e vice-versa.
Manterei tabelas de classificação separadas para as duas partes do desafio.
Classificação
Última atualização: 19/10/2014, 20:33 UTC
Policiais:
Os envios em itálico ainda não são seguros.
- nneonneo , 841 bytes
- Wumpus Q. Wumbley , 10.602 bytes
- Sp3000 , 52.506 bytes
- user23013 , 53.884 bytes
- nneonneo , 656.813 bytes
Ladrões:
- user23013 , Rachado: 11, Tamanho total: 733 + 30 + 2.447 + 71 + 109 + 121 + 97 + 60 + 141 + 200.127 + 7.563 = 211.499 bytes
- nneonneo , Rachado: 10, Tamanho total: 4.842 + 12.371 + 150 + 3.571 + 96 + 168 + 395 + 1.043 + 458 + 17.372 = 40.466 bytes
- Wumpus Q. Wumbley , Rachado: 6, Tamanho total: 22 + 24 + 158 + 32 + 145.245 + 145.475 = 290.956 bytes
- Dennis , Rachado: 2, Tamanho total: 70 + 73 = 143 bytes
- harius , Rachado: 1, Tamanho total: 9.998 bytes
- g.rocket , Rachado: 1, Tamanho total: 721 bytes
- stokastic , Rachado: 1, Tamanho total: 211 bytes
- Sp3000 , Rachado: 1, Tamanho Total: 133 bytes
- TwiNight , Rachado: 1, Tamanho total: 39 bytes
fonte
Respostas:
Regex .NET, 841 bytes [Seguro!]
Agora que eu tenho uma entrada segura, vamos ver o quão pequeno eu posso fazer a regex!
Pré - especificado :
Recursos:
Agradeço ao Sp3000 e ao user23013 por me informarem sobre o regex do .NET.
Após 72 horas, estou revelando a chave para tornar esse envio seguro.
Correspondência :
Sem correspondência :
Aren'tHashFunctionsFun?
Explicação:
fonte
(?<a>){53}
. Parece estar capturando o padrão vazio no grupo nomeadoa
53 vezes. Então, definaa=""
e repita mais 52 vezes? Mas eu realmente não sei se(?<
significa a mesma coisa na idéia de regexp da Microsoft. A documentação deles nem sequer menciona . Se mesmo um concurso regexp termina com extensões indocumentadas da Microsoft rolando sobre o pessoal do unix, minha existência não tem propósito.(?<a>){53}
pressiona a string vazia 53 vezes. Você pode abrir a pilha usando(?<-a>)
. Esperemos que agora esteja claro por que essa construção é tão útil.Regex básico, 656813 bytes [seguro!]
A regex para finalizar todas as regexes. Um final de madrugada na noite.
Testável sob PCRE, Perl, Python e muitos outros.
versão codificada em bzip2'd e base64 em Pastebin: http://pastebin.com/9kprSWBn (Pastebin não queria a versão bruta porque era muito grande).
Para garantir que você obtenha o regex certo, verifique se o hash MD5 está
ou verifique se começa com
e termina com
A chave ainda é um bom e confortável 256 bytes.
Testei esse regex com Python, mas observe que esse regex não usa nenhum recurso especial do Python. De fato, com exceção de
(?:)
(como um mecanismo de agrupamento), ele realmente não usa nenhum recurso especial de qualquer mecanismo de expressão regular: apenas classes básicas de caracteres, repetições e ancoragem. Portanto, deve ser testável em um grande número de mecanismos de expressão regular.Bem, na verdade, ainda posso aumentar a dificuldade, supondo que alguém não resolva apenas instantaneamente os problemas menores ... mas aposto que as pessoas terão problemas com uma regex de 1 GB ...
Após 72 horas, este envio permanece sem rachaduras! Portanto, agora estou revelando a chave para tornar a submissão segura. Esta é a primeira submissão segura, após mais de 30 submissões terem sido decifradas por ladrões persistentes.
Correspondência :
Massive Regex Problem Survives The Night!
Não correspondência :
rae4q9N4gMXG3QkjV1lvbfN!wI4unaqJtMXG9sqt2Tb!0eonbKx9yUt3xcZlUo5ZDilQO6Wfh25vixRzgWUDdiYgw7@J8LgYINiUzEsIjc1GPV1jpXqGcbS7JETMBAqGSlFC3ZOuCJroqcBeYQtOiEHRpmCM1ZPyRQg26F5Cf!5xthgWNiK!8q0mS7093XlRo7YJTgZUXHEN!tXXhER!Kenf8jRFGaWu6AoQpj!juLyMuUO5i0V5cz7knpDX0nsL
Explicação Regex:
fonte
ECMAScript (10602 bytes)
(Observação sobre o idioma: eu vejo muitas postagens rotuladas como ruby, python ou qualquer outra coisa, quando elas realmente não usam nenhum recurso específico do idioma. Este requer apenas
(?!...)
e(?=...)
além do POSIX ERE com referências anteriores. Esses recursos provavelmente estão em o mecanismo de expressão regular do seu idioma favorito, portanto, não desanime de tentar o desafio, porque eu escolhi usar o testador online de javascript.)Um pouco de diversão, não tão difícil em termos computacionais quanto alguns dos outros.
Teste aqui: http://regex101.com/r/kF2oQ3/1
(grilos cantando)
Não há compradores? É estranhamente decepcionante pensar em postar o spoiler sem nenhuma evidência de que alguém o tenha examinado por tempo suficiente para entender que tipo de problema é esse.
Estou escrevendo uma explicação completa para postar mais tarde, mas acho que ficaria mais feliz se alguém me vencesse.
Quando eu disse que não era "computacionalmente difícil" ... é uma instância de um problema NP-completo, mas não uma grande instância.
Dica: é um tipo de quebra-cabeça com lápis e papel. Mas eu ficaria impressionado se você puder resolver esse problema apenas com lápis e papel (depois de decodificar o regexp em um formulário adequado para impressão).
Tempo de spoiler
Existem vários níveis de spoilers aqui. Se você ainda não resolveu o regexp, tente novamente depois de ler apenas o primeiro bloco de spoiler. A chave real que corresponde ao regexp é após o último bloco de spoiler.
Segunda camada de deterioração:
Camada final de deterioração:
Não correspondência:
bananabananabanana
Correspondência:
Ɯ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ЏʘƜ
Prova: http://regex101.com/r/pJ3uM9/2
fonte
Sabor Perl, 158 [rachado]
Aqui está minha primeira tentativa:
Teste-o em ideone.com
fonte
j'k3j'kj'k3j'kj'kj'k3j'k3j'kj'k3j'kj'kj'k3R-k-<grc>-j'k<grc>-j'k$j'k-k-
Não correspondência:HOLYCRAPTHATWASEVIL
(correspondência disponível em ideone.com/pXaGaX para a prova)[^_^]
(-.-)
(?|...)
é complicado, mas está documentado. Veja a passagemperlre
que começa comBe careful when using the branch reset pattern in combination with named captures.
O truque é que grupos que têm o mesmo número, mas nomes diferentes, são o mesmo grupo , enquanto grupos que têm o mesmo nome, mas números diferentes, são grupos diferentes .Tipo JS, 9998 bytes [rachado]
Testado no Regex101
A solução que eu gerei:
fonte
M
atéŇ
. O Mathematica tem uma funçãoFindHamiltonianCycle
. Podemos transformar isso em um ciclo que atravessaŇ -> M
adicionando uma nova borda e conectando-aŇ
eM
através dela. Felizmente, o Mathematica encontra esse ciclo instantaneamente. :)RegEx compatível com JS - 3.571 bytes [rachado]
Eu ... terei ... pelo menos ... um ... sem quebra ... submissão. o \ __ / o
Resolve praticamente qualquer cadeia instantaneamente. Testável em qualquer console JS.
+100 rep para quem quebrar essa besta.
fonte
ThatWasActuallyFun
. Não jogo :,,;,;,,;,;;;,;,;,;;,,,,;,,,;,;;,,,,,,;;,,,,;;,;,,,;,;;;;,;;,;;,;,,;,,;,;;;,;,;,;;,,,;,;;;;,;,;;;,;,,;,,,;,,,,;,;;;;;;,,,,,;,;,;;;;;,;;;,;;,,,;;;,,;,;;,,,;,,,,,,;,;,,;;,,;;,,,;,;;,,,;,,;;,;,;,;;;;,,;,;,,;;;;;,,;,,;;,,;,,;;,,,,;,,;,,;;,;;;,,,,,;,,,,,,,,;,,,,
.PCRE - 96 bytes de UTF8, sem delimitadores, sem sinalizadores
[Derrotado] porque nneonneo é um sábio
Nada para ver aqui, seguir em frente ...
fonte
So just *SKIPthis one!
:; Nenhum resultado: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!
. Não jogo :WellThatWasTooEasy
. (Testado tanto com Perl 5.12 e Perl 5.18 na minha máquina)RegEx compatível com JS - 733 bytes [rachado]
Vamos tentar isso pela segunda vez com as métricas invertidas: uma expressão regular pesada, mas uma chave relativamente pequena (o mais importante, dentro do limite de 256 bytes).
Resolve praticamente qualquer cadeia instantaneamente. Testado em RegExr.
Expandido (por conveniência):
Boa sorte para todos. ;)
fonte
aaaabaaacaaadaaa
cacdbbcabdeababcdedaacdeecacbdabcd
Sabor .NET, 60 bytes [rachado]
Testado com Regex Storm .
fonte
1234567890012345
. Não jogo:1111222233334444
.٠߀०০੦૦୦௦౦೦൦๐໐༠၀႐០᠐᥆᧐᭐᮰᱀᱐꘠꣐꤀꩐0
Então, esses são todos os dígitos considerados em .NET ...Sabor Python: 211 bytes [rachado]
Nota: Esta resposta foi publicada antes da alteração da regra sobre o comprimento máximo da chave
Pensei que eu faria a bola rolar com isso:
(Testado em RegExr )
fonte
RegEx compatível com JS - 12.371 bytes [rachado]
Depois de algum incentivo de Martin, e vendo que outros policiais estão enviando regexes de mais de 600 KB, decidi mergulhar mais uma vez com isso (e na versão prettificada aqui ).
Resolve praticamente qualquer cadeia instantaneamente. Testável em qualquer console JS. Infelizmente, o tamanho o torna não testável por muitos testadores de regex online.
fonte
this was not NP-hard
. Não correspondido :nerdnydeprdoypoypwwwdprelwsprwssddayaeeeysyaaaypowroplsaoprdaolasnoylaeaeadeosladnnosyoywyesorlrydwddadoeyponneeyaaapesenaalnneydaewndplredlerwaawlnrssapapaopnrdwnslowdoanlrernpwyyarpprwnrssdlaopsnnrnnnardpaessldalroleswnnooarlpllasapsesaorardwreylayrr
Sabor .NET, 458 bytes [rachado]
Este é fácil. Mas eu vou postar um mais difícil mais tarde.
Acho que estou bem perto da resposta criptograficamente segura.
Testado em RegexStorm .
fonte
1100101001,1100111011
. Não correspondido :ThatsWhatIWantedToDo,Nice
RegEx compatível com JS - 2.447 bytes [rachado]
Minha tentativa final.
Tenho esperança de que este dure pelo menos algumas horas antes de ser quebrado. Depois disso, desisto. : P
Como todos os envios anteriores, ele resolve instantaneamente. Ao contrário dos envios anteriores, é muito longo para o RegExr.
Expandido:
fonte
aaaabaaacaaadaaa
. Não jogo:fdeacdbfbdcadaafdadcfdddfdbffeccbdecaaebfdfcfecbbfad
.(.)
pelo caractere correspondente e classifique por esse caractere, e ele se tornará óbvio.Sabor Python (721 bytes) [rachado]
Está na hora do "Problema de Análise v2":
Testado no Regex101 .
fonte
\ZRZTE[1LblHRKl3]?sHcKePT(7tvAE1K4r[zZTE[1LblHRKl3]?sHcKePT(7tvAE1K4rFxRzr
fósforos.a
não corresponde?
substituídas por qualquer caractere in(?(1)Q)
?
'Sabor Python (4842 bytes) [rachado]
Com agradecimentos a @COTO por idéias e conselhos
Gostei tanto da idéia 3-SAT do @TOC que pensei em tentar criar meu próprio regex com base nele. Porém, eu não estou tão familiarizado com a teoria do 3-SAT, então apenas orarei aos deuses da RNG e espero que eu tenha restrições suficientes.
Tentei manter o regex abaixo de 5.000 caracteres para ser justo - obviamente, regexes mais longos seriam impossíveis de decifrar, mas também não seriam muito divertidos de decifrar.
E aqui está um formato um pouco mais fácil de ler:
Testado no Regex101 .
fonte
x
. Não correspondido:0011001101000000000111010001101101011000010011011010000000010001011111000100010000
aaaabaaacaaadaaa
. Não correspondência:011100110010001010111101001010010011110010011010110101010001101100101111111111
+0000
. Apenas alguns segundos mais lento ...Sabor Perl, 133 [rachado]
Ok, este deve ser mais difícil de força bruta:
E uma versão mais longa, não faz parte do desafio:
Pode ser testado no Regex101 (sabor pcre).
fonte
{16,20}
.aaaaa,aaaaaa,aaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
a
s extras por algum motivo - deve haver 5,6,7,85,36,91,18a
s entre as vírgulas: /a
são ASCII, mas existem dois caracteres Unicode imprimíveis para cada quebra de linha manual que o SE faz.Formato .NET, 141 bytes [rachado]
Outro para os ladrões! Tenho certeza de que isso estará quebrado, mas espero que a pessoa que está aprendendo aprenda algo interessante sobre o sabor do .NET no processo.
Testado em RegexStorm e RegexHero .
fonte
[][][][][][][][]a][][][][][][][][
. Não correspondência:That's interesting...
Sabor Python (200127 bytes) [rachado]
Só para que possamos (espero) ver algo durar um dia, é hora de lançar as grandes armas :)
O problema com o caminho 3-SAT e Hamiltoniano é que a complexidade está em termos do tamanho da chave. Desta vez, escolhi algo que depende da regex, e não da chave.
Aqui está: regex . Você também pode achar esse arquivo útil. (Não se preocupe, desta vez não escondi nada de estranho;))
Eu usei o RegexPlanet para testar este - foi difícil encontrar algo que não atingisse o tempo limite: /. Para verificar se houve uma correspondência, veja se a sua string aparece em
findall()
.Boa sorte!
fonte
d,mE~JZ0,_:3kBdLdgBSzJ!@MLrrAgKsf@Pl35N9bxsIf@ReVU>:YDg`d1MjL@_-
. Não corresponde:{ 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 [rachado]
Agradeço ao Wumpus por me ensinar a importância de verificar nossos índices :)
O mesmo acordo que a última solução, só que desta vez não quebrado. Regex bruto: http://pastebin.com/MReS2R1k
Edição: Não foi quebrado, mas aparentemente ainda era muito fácil. Pelo menos não foi resolvido "instantaneamente";)
fonte
1040060321170122554027333022674205250442151362365165773421664173556667110413375720720711725045122733213710556062114131057357354554245723416516004761215632214223735570625116160162051407026445600345370604702671021412723536217011007021752560474402200436670402
correspondência:minisat2hoursCPU
Implementação Java Pattern / Oracle (75 caracteres / 150 bytes UTF-16) [rachado]
(Nome de código: Bad Coffee 101)
Este é o
Pattern
objeto, comCANON_EQ
flag, a ser usado commatches()
(âncora implícita):Teste sua chave aqui no ideone
É garantido que existe uma chave. Leia o spoiler se quiser alguma confirmação.
Isso utiliza 4 bugs:
CANON_EQ
retenção de texto capturado de tentativa falhada, classe de caracteres perdidos e estouro de quantificador.fonte
"(?: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"
(formulário citado). Não jogo :JavaRegexSoBuggy
. ideone for match: ideone.com/DEesdkCANON_EQ
expande caracteres pré-compostos em alternações internamente, o que é hilário por dentro\Q\E
; (2) comprimentos de repetição são truncados para 32 bits; (3) há alguma coisa estranha acontecendo com o par de classes de personagens que faz com que ele pule a alternância (não entendeu exatamente o que era o bug).\1
bug do backref . E sim, há um erro na classe de personagem. Como você descobriu tudo isso em menos de 2 horas?Formato .NET, 17.372 bytes [rachado]
Esta ainda é uma versão fácil.
Precisa de mais otimização para trabalhar com seqüências mais longas.O regex está aqui: http://pastebin.com/YPE4zyBB
Ungolfed: http://pastebin.com/PLJp0KhF
Testado no RegexStorm e neste blog e no RegExLib (com todas as opções desmarcadas).
fonte
Ľê¯6Aĝ4aþĀ,lŃŝĿBİŢŞĩï
(escapou:)\u013d\xea\xaf6A\u011d4a\xfe\u0100,l\u0143\u015d\u013fB\u0130\u0162\u015e\u0129\xef
. Não correspondido :VeryNiceMultiplier
Formato ECMAScript, 30 bytes [rachado]
Aqui está bastante simples para os ladrões decifrarem. Conceitualmente, não é muito difícil, mas pode exigir um pouco de pesquisa (ou script). Não pretendo me listar na tabela de classificação, mas se alguém o conseguir dentro de 72 horas, isso será contabilizado na pontuação do ladrão.
Testado no Regex101 e RegExr usando o Chrome.
Bem, isso foi rápido!
fonte
wqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBnw==
aaaabaaacaaadaaa
.*
no lookahead. Boa pegada. Deveria ter testado mais completamente.Com sabor de rubi , 24 bytes [rachado]
fonte
[]\\[]
;))soylentgreenispeople
. A correspondência disponível em rubular.com/r/TCqjcaGsU1 não foi postada aqui por causa de como o sistema de comentários lida com palavras longas.PHP, 168 bytes [quebrado por nneonneo ]
Aqui está uma demonstração do regex .
PS Este jogo é difícil.
fonte
\1?!($!?)?!(?=(?1))!?
. Não correspondido :IncrementalRegexTestingWorks
PCRE (1043 bytes) [rachado]
Depois que as regexes geradas aleatoriamente falharam comigo (as idéias eram boas, mas não consegui gerar instâncias de problemas adequadas), decidi criar manualmente essa. Eu o chamo de "Um monte de regras para satisfazer".
E expandido:
Testado no Regex101 - dependendo do seu computador, você pode precisar aumentar o tempo máximo de execução.
fonte
[((({.[.[](){{}{].{.(({){(.[]()....}}].{{[[....).[..]()(}..[..]([....(([{((({).](){.{}{}{}....}[[()[}}][{{[({[[[.]]}()]].{}.]{[..]{.[]]}}}())))(())[(.].{[.{[[..[()].()}{{.[...[}{.]..)]...{.])))).}}..([......{.....[.]}[...}.{[.}...}})}.))).]}}]]]}]]].)]]..}
. Não jogo:WhatANastySetOfRulesYouHave
.(?=(.*\[.*\(.*\{){5,9}.*)
, não precisará aumentar o tempo máximo de execução (mesmo resultado) - as correspondências serão instantâneas.Tipo .NET (7563 bytes) [rachado]
Inspirado pela ideia de @ user23013
Simplesmente não podemos ter problemas suficientes de NP-completo! Aqui está a versão expandida:
Testado no Regex Hero (o tempo limite do Regex Storm termina neste).
fonte
01111111111111111111111011001111111111011111111111111111111101111111111
11111111111111111111011111111000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000
(remova esses espaços). Não jogo:KnapsackAlgorithm
. Não é fácil instalar o Silverlight na minha máquina Ubuntu. Mas isso funcionou em algum outro testador.Tipo .NET (52506 bytes)
Soma do subconjunto, edição deluxe.
Regex aqui , versão expandida aqui , testada em RegExLib e Regex Hero
fonte
Sabor .NET, 53.884 bytes [seguro]
Gerado por GnuPG! E extraído por pgpdump. É 1536 bits porque as versões mais longas falharam no testador online.
O regex está aqui: http://pastebin.com/PkJnj9ME
Testado em RegExLib (sem opções selecionadas). Espero não ter causado muitos problemas a eles.
Você provavelmente deseja decifrar a versão fácil primeiro. É o mesmo que este, exceto por ter uma chave muito mais curta.
Você provavelmente também deseja este número:
A chave
Combine:
Sem correspondência:
Os números primos:
A explicação está na versão fácil .
O script gerador (em CJam)
A entrada deve ser o número acima.
Após a conclusão, a solução pode ser gerada por este programa:
A entrada deve ser dois números inteiros.
fonte
PHP, 395 bytes [quebrado por nneonneo ]
Um quebra-cabeça melhor do que minha última entrada.
Nota: A chave correspondente é multilinha, com cada linha separada pelo novo caractere de linha
\n
. Reconstrua alguma arte ASCII!Aqui está uma demonstração do regex .
fonte
202e272d207768616c650a2d3a3a2e2f202f205f2e27273a2e0a2d3a2c2020285f5f2e2e27602020205c0a2020205c202020202020202020202e207c0a602c2e5f5f2e2020202c5f5f2e27272f0a2020202020202d2e5f2f5f2e2d5f5f5f2e2d
(codificado em hexadecimal). Não jogo :IDon'tThinkIGotTheRightPicture
. Área de.-'
no início.'-
. Em retrospectiva o primeiro é muito mais plausível para a arte ASCII;)Sabor Perl, 97 [rachado]
Receio que isso seja muito fácil devido ao limite de tamanho da chave.
Se você acha que descobriu a ideia, tente a versão mais longa (não faz parte do desafio):
fonte
aaaaaaa,a,aa,aaa,aaaaaaa
. Não jogo:aaaabaaacaaadaaa
.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,a,aa,
(remova esses caracteres)aaaa,aaaaaaa,aaaaaaaa,aaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaa,
(remova esses caracteres)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
. Não coincide:aaaabaaacaaadaaa
(remove these characters)
.)