Em um acidente muito incomum envolvendo uma pequena amostra de rádio, uma baleia eletrocutada e três ursinhos de goma, parte do código-fonte do The Management ™ foi modificada. Mal sabe o chefe da gerência ™, foram os policiais que foram os responsáveis, na tentativa de frustrar os planos "maus" da gerência. Então os Robbers® foram contratados na tentativa de recuperar o código original, porque quem não gosta de ser mau às vezes?
nota: Esse desafio foi fortemente inspirado em Desembaralhar o código-fonte .
Descrição
Este é um desafio de policiais e ladrões .
- Os policiais gravam um programa (o código mutado) que executa a Tarefa 1 (e também escrevem um programa que executa a Tarefa 2, mas é mantido em segredo).
- Os ladrões tentarão reverter a "mutação" e alterar esse código original em código que executa a tarefa nº 2.
Nesse desafio, a tarefa nº 1 será a saída do n
número th prime , e a tarefa nº 2 será a saída do n
número th de Fibonacci (que de alguma forma é ruim, de acordo com o Cops ©). A sequência de Fibonacci é definida como ( n=1
→ 1
; n=2
→ 1
; n=3
→ 2
; ...), e os números primos são definidos como ( n=1
→ 2
; n=2
→ 3
; n=3
→ 5
; ...).
O objetivo da polícia é minimizar a diferença entre os programas que concluem a Tarefa nº 1 e a Tarefa nº 2, enquanto impede os ladrões de recriar o código que conclui a Tarefa nº 2.
Regras da polícia
Os policiais escreverão dois programas (um que conclui a tarefa nº 1 e outro que conclui a tarefa nº 2) e tornarão públicas as seguintes informações:
- O primeiro programa (que exibe o
n
número primo) - A distância de edição de Levenshtein entre o primeiro programa e o segundo programa
- A linguagem de programação na qual os dois programas foram escritos (deve ser a mesma linguagem para os dois programas)
As seguintes restrições se aplicam aos dois programas:
- Eles devem ter 128 caracteres ou menos.
- Eles devem usar apenas ASCII imprimível (além de novas linhas, que também são permitidas).
- Eles devem levar menos de 10 segundos para serem executados
n=45
e não são necessários para produzir a saída correta para nenhumn>45
. - Eles não devem usar nenhuma função de hash ou criptográfica.
Regras de ladrão
O ladrão tentará alterar o programa do policial (que conclui a Tarefa 1) em um programa que conclui a Tarefa 2 (não necessariamente o programa original escrito pelo policial) na distância de edição especificada pelo policial.
Um envio já quebrado não pode ser quebrado novamente (somente o primeiro ladrão que quebra um pedido recebe crédito).
Depois de quebrar uma submissão, faça o seguinte:
- Poste uma resposta para a pergunta que acompanha o desafio (link) , fornecendo o idioma, sua solução e um link para a resposta original.
- Deixe um comentário com o texto "Rachado" que vincula a sua resposta postada.
- Edite a resposta do policial se você tiver privilégios de edição (caso contrário, aguarde até que alguém com os privilégios necessários o faça por você ou sugira uma edição).
Pontuação
Se o programa de um policial permanecer sem quebra por 1 semana, ele poderá postar o código original que conclui a Tarefa nº 2 (na distância de edição especificada) e o envio será considerado "seguro" a partir de então. O envio seguro que tiver a menor distância de edição vencerá. Em caso de empate, o programa mais curto (o original que conclui a Tarefa nº 1) vence. Se dois envios ainda estiverem empatados, o que foi postado anteriormente vence.
Se um assaltante quebrar com êxito o envio de um policial, a pontuação do assaltante aumentará a distância de edição desse envio. Por exemplo, um ladrão que quebra uma submissão com uma distância de edição de 3 e um com uma distância de 5 ganha 8 pontos. O ladrão com a maior pontuação vence. Em caso de empate, o ladrão que obteve a pontuação vence primeiro.