Este é um desafio de policiais e ladrões. Este é o tópico do policial. o linha do ladrão está aqui .
Como policial, você deve escolher qualquer sequência do OEIS e escrever um programa p que imprima o primeiro número inteiro dessa sequência. Você também deve encontrar algumas strings s . Se você inserir s em algum lugar em p , esse programa deverá imprimir o segundo número inteiro da sequência. Se você inserir s + s no mesmo local em p , este programa deverá imprimir o terceiro número inteiro a partir da sequência.s + s + s no mesmo local imprimirá o quarto, e assim por diante. Aqui está um exemplo:
Python 3, sequência A000027
print(1)
A cadeia oculta é dois bytes .
A cadeia é +1
, porque o programa print(1+1)
imprimirá o segundo número inteiro em A000027, o programa print(1+1+1)
imprimirá o terceiro número inteiro etc.
Os policiais devem revelar a sequência, o programa original p e o comprimento da sequência oculta s . Os ladrões quebram uma submissão encontrando qualquer sequência com esse comprimento e o local para inseri-la e criar a sequência. A sequência não precisa corresponder à solução pretendida para ser um crack válido, nem o local em que está inserida.
Regras
Sua solução deve funcionar para qualquer número na sequência, ou pelo menos até um limite razoável, onde falha, devido a restrições de memória, excesso de número inteiro / pilha etc.
O ladrão vencedor é o usuário que racha mais entradas, sendo o desempate quem atinge esse número de rachaduras primeiro.
O policial vencedor é o policial com a menor corda s que não está quebrada. O desempatador é o menor p . Se não houver envios sem rachaduras, o policial que teve uma solução sem rachaduras por mais vitórias.
Para ser declarada segura, sua solução deve permanecer sem quebra por 1 semana e, em seguida, ter a sequência oculta (e o local para inseri-la) revelada.
s não pode ser aninhado, deve concatenar de ponta a ponta. Por exemplo, se s fosse
10
, cada iteração seria executada em10, 1010, 101010, 10101010...
vez de10, 1100, 111000, 11110000...
É aceitável iniciar no segundo termo da sequência e não no primeiro.
Se sua sequência tiver um número finito de termos, passar do último termo poderá resultar em um comportamento indefinido.
Todas as soluções criptográficas (por exemplo, verificando o hash da substring) são proibidas.
Se s contiver caracteres não ASCII, você também deverá especificar a codificação que está sendo usada.