Este é o tópico dos policiais. A discussão dos ladrões está aqui .
Seu desafio é criar um programa que funcione para sempre sem interromper 1 , a menos que obtenha uma entrada ou entradas específicas 2 . Se receber essa entrada, deverá terminar em um período finito de tempo 3 . Isso é código-golfe , então a resposta mais curta que não foi quebrada por um ladrão dentro de uma semana após a publicação vence. Após a semana, marque sua resposta como segura e mostre a entrada de parada (em a > ! spoiler quote
). Se um ladrão quebrar sua submissão, marque-a como rachada e mostre a entrada interrompida (em a > ! spoiler quote
).
É preferível que os envios sejam executáveis e quebráveis no TIO . Os envios não executáveis ou quebráveis no TIO são permitidos, mas inclua instruções para fazer o download / executá-los.
Faça sua entrada determinística e uniforme em todas as execuções. Veja esta meta post para detalhes.
Por favor, não "implemente o RSA" ou algo que signifique para os ladrões. Use idiomas e recursos obscuros, sem criptografia e hash chatos. Não posso impor isso com regras, mas você pode esperar votos em queda torrenciais se tudo o que você faz é sha(input) === "abcd1234"
.
1 Supondo que o computador não seja desligado, quebre, seja envolvido pelo sol, superaqueça com a morte por calor do universo ou atinja o tempo limite do TIO nos anos 60.
2 O programa deve parar em pelo menos uma entrada. Contanto que ele faça loops para sempre em uma entrada e pare em outra, funcionará.
3 Deve ser <60 segundos, para que o código possa ser testado no TIO.
Procurando envios sem rachaduras?
fetch("https://api.stackexchange.com/2.2/questions/135363/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>
fonte
R
erros imediatamente, sem sequer entrar na função de crack. Eu argumentaria que isso não conta como realmente encerrando a função.Respostas:
Malbolge, 128 bytes, quebrado por KBRON111
Diverta-se!
(Sim, eu aprendi Malbolge apenas por isso. Sim, demorou um tempo absurdamente longo para finalmente começar a trabalhar. E sim, valeu totalmente a pena.)
Embrulhado, para que você possa vê-lo na íntegra, er, "glória":
Eu usei esse intérprete para testá-lo; Não tenho certeza se isso importa, mas achei que especificaria apenas por precaução.
fonte
6
e o terceiro é um dos quatro:!
,#
,/
e-
. Mas a combinação não parece consertar a parada. Coloquei aqui, talvez alguém mais inteligente encontre uma solução. Se alguém quiser, vou postar amanhã como cheguei a essas entradas. EDIT: Agora que penso nisso, meu programa que escrevi com o objetivo de engenharia reversa pode ter um bug, e a primeira entrada pode ser outra coisa que não6
. O terceiro personagem ainda está de pé.JavaScript (ES6), 17 bytes, Cracked
No TIO, como não sei como executar o readline do Node.js no TIO, basta inserir a entrada na chamada de função. Isso é óbvio para quem sabe, e não para quem não conhece.
Experimente online!
Responda:
fonte
NaN == NaN
é falso em muitos idiomas além do JavaScript. Eu não chamaria isso de "estranheza linguística".NaN != NaN
é uma característica de números de ponto flutuante+
oumax()
, mas a maioria das pessoas não se importam: P)JS (ES6), 67 bytes ( rachado )
Eu acho que não errei, pode ter uma solução fácil que eu não vi.
Agradeço qualquer feedback, este é um dos meus primeiros posts
fonte
x
ey
são finitos, mas não vou editar uma vez que já estava rachado. Poderia ter sido 38 bytesPython 3.4, (40 bytes) Rachado
fonte
x==x
em uma variável chamadato_be
, para que você possa fazer uma referência Hamlet.Javascript (NÃO node.js)
A submissão desejada não usa throw.
Dica para a rachadura desejada:
Rachadura desejada:
fonte
throw
(embora ainda dê um erro) #throw
, creio que desta vez real, pois Grant Davis 'não funcionou para mim. AindaTypeError
s.x=>{try{for(;x+"h";)}catch(e){for(;;)}}
isso para que qualquer erro resulte em um loop infinito, para que erros de função de protótipo ausentes (ou quaisquer erros) resultem em um loop infinito.C (gcc) , 75 bytes Cracked
Experimente online!
Eu nunca publiquei um policial e ladrão antes. Espero que isso não seja muito óbvio.
Solução:
fonte
JavaScript (no navegador), 79 bytes Cracked
Você deve executá-lo em um navegador recente (como o Firefox ESR mais recente, o Firefox mais recente, o Chromium mais recente). A execução em navegadores antigos (como o Netscape 2, IE 4) não conta.
Nota: Interrompido pelo navegador devido ao tempo limite, não conte uma parada aqui.
Sempre tenha cuidado para não travar o navegador ao testar esses códigos e roubar feliz ^ _ ^
fonte
setTimeout
como parâmetro não funciona.var key=(()=>{setTimeout(args);return null})()
e então #crackme(key)
PHP (quebrado por Vicente Gallur Valero), 65 bytes
Experimente online!
Mais difícil do que parece. Editado para ser possível no TIO, ao custo de vários bytes. Toma entrada via
$argv[1]
.fonte
Casca , 5 bytes Rachada
Experimente online!
Um pouco de explicação, já que esse idioma ainda é bem novo:
←ø
obtém o primeiro elemento de uma lista vazia: retorna um valor que pode assumir qualquer tipo, seja um tipo concreto ou uma função, que será aplicada à entrada.∞
cria uma lista infinita composta por cópias do resultado anterior (que na maioria dos casos significa uma lista de zeros infinitos).↑ε
retira elementos desta lista desde que sejam "pequenos", ou seja, seu valor absoluto é ≤1; em uma lista infinita de zeros, isso nunca para.fonte
Braingolf , 4 bytes ( rachado )
Experimente online!
Suuuper fácil, mas
vamos ver quanto tempo levaResponda:
fonte
Ruby , 31 bytes ( quebrado por Eric Duminil )
Experimente online!
Observe que isso precisa ser executado em um ambiente onde não há nova linha final no resultado de
gets
, ou então é impossível fazê-la parar (eu acho), pois qualquer coisa que termine em uma nova linha irá errar e atingir o resgate.fonte
3.methods
retorna5
ou sai do loop.5
a pensar que a resposta correta envolveria a função que ele fez ...Bash, 25 bytes ( rachado )
Inspirado por Dennis. Experimente online.
fonte
Bash 4.2, 14 bytes ( quebrado )
Vamos tentar de novo.
Isso não funciona no TIO, que usa o Bash 4.3. A entrada é via argumentos da linha de comando.
No Linux e com o gcc instalado, o Bash 4.2.53 pode ser baixado e compilado da seguinte maneira.
fonte
Retina , 78 bytes ( Rachado ) ( Rachado com solução pretendida )
Foi muito divertido de escrever, espero que seja divertido de quebrar
Experimente online!
Rachado com uma solução não intencional e a solução pretendida dentro de um minuto uma da outra. Um postado primeiro, um comentado primeiro.
Solução pretendida:
fonte
Node.js, 23 bytes ( rachado )
Solução Grant Davis
Minha solução
fonte
Java 8, 99 bytes, Rachado
Este é um lambda do tipo
Consumer<String>
.Ungolfed:
Experimente online! (observe que o programa de teste falhará na entrada vazia, mas o lambda em si não o faria!) (também use 'argumentos' e não 'entrada' no TIO, pois o programa de teste usa argumentos, não STDIN)
Resposta pretendida:
fonte
Bash 4.2, 10 bytes ( rachado )
Isso não funciona no TIO, que usa o Bash 4.3. A entrada é via argumentos da linha de comando.
No Linux e com o gcc instalado, o Bash 4.2.53 pode ser baixado e compilado da seguinte maneira.
fonte
Java: 1760 ( Rachado )
Eu sinto que é muito ruim jogar este, então apenas ofusquei os nomes das variáveis e a deixei 'bagunçada'. Por uma questão de fato, é tão malvado que vou postar dicas ao longo do tempo, para que eu possa ver isso rachado.
Dica 1: isso tem entradas válidas teoricamente infinitas, mas há uma que é a mais 'correta'
Experimente online!
fonte
Braingolf , 18 bytes Rachado
Experimente online!
Liiiitle um pouco mais difícil do que o último, vou começar a escrever um real depois disso
fonte
i
não funciona.£
). E por que não-1
funciona? Isso é complicado.JavaScript (ES7), 41 bytes ( invadido e quebrado )
Edit: corrigido para impedir que ele falhe quando não recebe nenhuma entrada (obrigado @totallyhuman por perceber)
Provavelmente existem várias soluções, mas a esperada é relativamente simples.
Solução pretendida:
fonte
Bash + Utils (rachado por Dennis), 74 bytes
Espero que você goste de alcatrão, porque é o único utilitário que você pode usar.
Experimente online!
Rachadura pretendida
fonte
Mathematica,
3626 bytes ( quebrado )Um loop muito curto
#0[#;∞]
que continuará sendo executado repetidamente até travar o kernel ... (O$IterationLimit
é apenas para garantir que você fique preso para sempre na maioria das entradas).Experimente na Wolfram Sandbox! - se você estiver preso em um loop infinito, poderá esperar até atingir o tempo limite ou pressionar o ícone quadrado "anular avaliação" à esquerda do título do notebook
(unnamed)
.NOTA : esta função altera suas
$IterationLimit
configurações.fonte
JavaScript (Node.js), 18 bytes ( Rachado )
Experimente online! Responda:
fonte
Symbol()
iria funcionar.C #, 118 bytes ( rachado )
Não espero que isso dure muito tempo, mas é mais estranho do que parece.
fonte
C, 140 bytes ( rachado )
Esperamos que não haja muitas entradas nem mesmo próximas às planejadas, o que interrompe, mas vamos ver.
Experimente online!
fonte
JavaScript (ES7), 73 bytes ( Rachado !)
Soluções não desejadas: força bruta. O crack desejado envolve matemática.
Observe que existem muitas soluções (4194304) devido ao módulo.
fonte
brainfuck , 170 bytes rachados!
Experimente online!
fonte
nul
no cérebro. BTW você pode remover dois primeiro>
salvar 2 bytes.JavaScript ES6 (Node.js> = 6.0) , 326 bytes (Seguro)
Muito mais simplificado do que meu outro desafio , não estou mais tentando ofuscar a abordagem da solução, o que me salvou muitos bytes. Desta vez,
process.kill()
não funcionará.Experimente online!
fonte
Swift 3, 14 bytes ( rachado )
Para resolver isso, coloque seu código antes ou depois desta declaração.
fatalError()
, etc., antes que não conte.fonte
ambiguous semantics
comigo.cQuents , 2 bytes ( Rachado 1 ) ( Rachado 2 )
Observe que isso atingirá rapidamente o limite de saída de 128 KiB no TIO, fazendo com que ele pare, mas quando executado localmente, ele fará um loop para sempre, exceto na entrada que o interrompe. Encontrar essa entrada deve ser bastante fácil. Até que você faça isso,
:A
continuará apontando a língua triangular para você.Observe também que isso deve ser justo,
A
mas quebrei os modos implícitos ontem à noite. Em versões antigas de intérpretesA
, funcionaria bem.Rachaduras:
Experimente online!
fonte