Nesse desafio de policiais e ladrões , os policiais pensarão em um número inteiro positivo. Eles escreverão um programa ou função que gera um valor quando fornecido o número como entrada e outro valor para todas as outras entradas inteiras positivas. Os policiais então revelam o programa em uma resposta, mantendo o número em segredo. Ladrões podem quebrar uma resposta encontrando o número.
Aqui está o problema: este não é um código de golfe ; sua pontuação será o número secreto, com uma pontuação menor sendo melhor. Obviamente, você não pode revelar sua pontuação enquanto os ladrões ainda estão tentando encontrá-la. Uma resposta que não foi quebrada uma semana após a postagem pode ter sua pontuação revelada e ser marcada como segura. Respostas seguras não podem ser quebradas.
Provavelmente, é desnecessário dizer, mas você deve conseguir sua resposta. Ou seja, você deve saber exatamente qual valor é aceito pela sua máquina de decisão. Simplesmente saber que existe um não é suficiente.
Uso de funções criptográficas
Ao contrário da maioria dos desafios de policiais e ladrões que pedem para você não usar funções criptográficas, esse desafio não apenas permite que eles sejam totalmente incentivados, mas também os incentiva. Você é livre para criar respostas de qualquer forma, enquanto estiver tentando vencer. Dito isto, respostas usando outros métodos também são bem-vindas aqui. O objetivo do desafio é vencer e, desde que você não trapaceie, nada estará fora da mesa.
fonte
A(9,9)
ondeA
é a função de Ackerman.Respostas:
Tampio , Rachado
Correr com:
As instruções para instalar o intérprete estão incluídas na página do Github. Por favor, diga se você tem alguma dificuldade em executar isso.
fonte
Perl 6 - Rachado!
Em sentido estrito, este não é um envio aceitável, porque não se esforça muito para vencer. Em vez disso, espera oferecer um quebra-cabeça agradável.
É um programa de "matemática pura" que se destina a ser quebrado pela contemplação. Tenho certeza de que você pode usar a solução com força bruta (depois de limpar uma programação desleixada que comprometi propositalmente), mas, para obter "crédito total" (: -)), você deve ser capaz de explicar o que ela faz em termos matemáticos .
Você deveria quebrar a função f (). (Essa é a função que pega um número natural e retorna um dos dois resultados.) Aviso: Como mostra o @Nitrodon, o programa realmente se comporta incorretamente e "aceita" um número infinito de entradas. Como não tenho idéia de como corrigi-lo, apenas observo para os futuros solucionadores que o número que eu tinha em mente é menor que 70000 .
Se você tentar executar isso no TIO, o tempo limite será excedido . Isso é intencional. (Como não deveria ser executado!)
Por fim, tentei escrever um código razoavelmente claro. Você deve conseguir lê-lo com fluência, mesmo que não esteja familiarizado com o idioma. Apenas duas observações: os colchetes [ op ] significam reduzir ("dobrar", na linguagem Haskell) uma lista com o operador op ; e o sub chamado
postfix:<!>
realmente define um operador postfix chamado! (ou seja, usado como5!
- ele faz exatamente o que você esperaria). Da mesma forma para oprefix:<∫>
primeiro.Espero que alguém goste deste, mas não tenho certeza se entendi bem a dificuldade. Sinta-se à vontade para me criticar nos comentários :—).
Experimente online!
fonte
JavaScript, Rachado
Eu ofusquei isso o máximo que posso, a ponto de não caber nessa resposta.
Experimente aqui! Clique em Executar e digite no console
guess(n)
Retorna indefinido se você receber a resposta errada; retorna true caso contrário.
Edit: De alguma forma eu ignorei a parte sobre a minha pontuação ser o número. Oh, bem, meu número é muito, muito grande. Boa sorte resolvendo assim mesmo.
fonte
Geléia , pontuação: ... 1 ( rachado )
Experimente online!
1 Realmente esperava que eu revelasse? Vamos! Oh, bem, tem 134 pontos. Lá, eu disse!
fonte
Ç€G
e o intervalo1...1000
como entrada: P5ȷ2_
parte, certo?1
é, então eu ter colado a seqüência desde o início até o1
em um script Python e contou o número de zeros antes que ...Python 2 (rachado)
Eu não sugeriria força bruta. Espero que você goste de geradores!
Experimente online!
Saídas
1
para o número correto,0
caso contrário.fonte
a
deveria seri+a
. Eu fixo-lo, mas que é rachado qualquer maneira encolher de ombrosHaskell , cracked
Isso é puramente baseado em aritmética. Observe que essa
myfun
é a função real, enquantoh
é apenas uma função auxiliar.Experimente online!
fonte
Java, rachado por Nitrodon
Eu queria tentar algo diferente do que o habitual hash e funções aleatórias. Você pode passar o número como um argumento de linha de comando. Saída
1
se o número correto for fornecido e0
caso contrário. Para números pequenos, você também pode experimentá-lo online .Dica:
Explicação:
fonte
Pitão, rachado por Erik, o Outgolfer *
Eu tentei ofuscar isso o máximo possível.
Experimente aqui!
fonte
Oitava, pontuação: ???
É praticamente garantido que nenhum outro número terá exatamente os mesmos 20 números aleatórios no final da lista
1e8
de números.Saídas
1
para o número secreto,0
caso contrário.Eu executei isso no Octave 4.2.0.
"Dorme e outras lentidões podem ser removidas quando forçadas a brutalidade."
Boa sorte com isso :)
fonte
Ly , pontuação 239, rachada
Experimente online!
Estou apostando em ninguém que conhece Ly aqui, embora eu saiba com que facilidade isso pode mudar ... suores
Explicação:
fonte
Brain-Flak , pontuação 1574 ( rachada )
Experimente online!
fonte
dc
Experimente online!
Nota: Este envio foi modificado desde que foi enviado. O envio original (abaixo) foi inválido e decifrado por Sleafar nos comentários abaixo. (Uma entrada de
1
dá origem à saídayes
, mas há outro número que dá o mesmo resultado.)Experimente online!
fonte
Ruby , seguro, pontuação:
Experimente online!
Explicação:
fonte
PHP, seguro, pontuação:
Saídas 1, se correto, 0 caso contrário.
Edit: Eu não acho que alguém sequer tentou quebrar isso porque:
Explicação:
fonte
Swift 3 (53 bytes) - Rachado
Como executar isso? -
f(n:1)
.Teste aqui.
fonte
Python 3, pontuação: ???
Esperemos que isso, se alguma coisa, demonstre como esse problema é realmente quebrado:
Essencialmente, o que esse código faz é gerar preguiçosamente todas as strings possíveis até que uma das strings tenha um hash que corresponda exatamente
hash_code
acima. O código unhashed assume a forma básica de:Exceto
<insert number here>
é substituído por um número e há comentários no código com o objetivo de tornar o código quase impossível de adivinhar.Tomei todas as precauções para garantir que eu não me beneficie com este post. Para iniciantes, é um wiki da comunidade, portanto não receberei representantes por isso. Além disso, minha pontuação é bastante grande, por isso espero que uma resposta muito mais criativa apareça e vença.
Espero que vocês não fiquem muito furiosos com a minha resposta, eu só queria mostrar por que os postos de policiais e ladrões geralmente banem algoritmos de hash.
fonte
256 ^ 100
ou seja, é uma2 ^ 800
string. Enquanto isso, existem apenas2 ^ 512
possíveis hashes de 512 bits. Isso significa que as cordas sobre as quais você itera superam os possíveis hashes pelo menos2 ^ 288
para um - um número 10.000 vezes maior que o número de átomos no universo. A probabilidade desse hash em particular não ser utilizada é incrivelmente pequena .Python 3 , 49 bytes, rachado por sonar235
Experimente online!
fonte
Java, pontuação: 3141592 ( Rachado )
fonte
Python 3, pontuação 1 (seguro)
Não é uma solução muito interessante, mas é melhor um policial seguro do que um policial morto.
Saídas
1
para o número de destino,0
caso contrário. A entrada é retirada do stdin. A última parte (and int(original.decode())<1000
) existe apenas para garantir apenas uma resposta, caso contrário, obviamente haveria infinitas respostas.fonte
100000000
.C (gcc) , pontuação ???
Como as soluções criptográficas são incentivadas, aqui. Exatamente um número inteiro positivo imprimirá algo , todos os outros não imprimirão nada. Isso leva muito tempo, portanto não pode ser testado online.
fonte
Java, 164517378918, seguro
fonte
TI-BASIC,
pontuação: 196164532não concorrenteRetorna 1 para o número secreto, 0 caso contrário.
Consulte a nota nesta página no
rand
comando para obter mais informações.fonte
Python 3 , pontuação :?
Experimente online!
Simples, mas pode levar algum tempo para força bruta ;-) Ansioso para um rápido crack ;-)
Nota de rodapé: as duas primeiras e as últimas condições tornam a resposta única.
BTW como a pontuação é calculada?
Dica 1
fonte
Aceto , seguro
Emite TrueFalse, se correto, FalseFalse, caso contrário
O número era
Experimente online!
fonte
C #, Mono, Linux, Alpha, pontuação 1 (seguro)
Cuidado. Quero dizer. Existem muitos simuladores alfa por aí. Use um com instabilidade ou isso não terminará.
Isso depende do fato de o Alpha ser big-endian, fazendo com que o System.BitConverter faça a coisa errada se alguém tentar fazer isso em x86 ou x64. Escrevi esta resposta para demonstrar a maldade do desafio mais do que qualquer outra coisa.
fonte