Este é o posto do policial. O post do ladrão está aqui .
Sua tarefa é pegar uma entrada inteira N e gerar o enésimo dígito na sequência OEIS A002942 .
A sequência consiste nos números quadrados escritos ao contrário:
1, 4, 9, 61, 52, 63, 94, 46, 18, 1, 121, 441, ...
Observe que os zeros à esquerda são cortados ( 100 se torna 1 , não 001 ). Concatenar isso em uma string (ou um número longo fornece):
1496152639446181121441
Você deve emitir o enésimo dígito nesta sequência / número. Você pode escolher N como indexado 0 ou 1 (indique qual você escolher).
Casos de teste (indexados 1):
N = 1, ==> 1
N = 5, ==> 1
N = 17, ==> 1 <- Important test case! It's not zero.
N = 20, ==> 4
N = 78, ==> 0
N = 100, ==> 4
Seu código deve funcionar para números de até N = 2 ^ 15 (a menos que seu idioma não possa manipular números inteiros de 32 bits por padrão, nesse caso, N pode ser menor).
Policiais:
Você deve escrever duas funções / programas, no mesmo idioma, que fazem a mesma coisa. Você deve postar uma das funções / programas, bem como a distância de Levenshtein entre as duas funções / programas que você escreveu. A distância de Levenshtein é medida em caracteres (portanto, a adição de um caractere de dois bytes fornecerá um LD = 1).
O código não revelado não pode ser maior que a solução original (mas pode ter o mesmo tamanho). Os ladrões tentarão escrever um código com a distância exata de Levenshtein que você deu (pode ser diferente do código não revelado, desde que funcione).
O vencedor será a finalização sem rachaduras que tiver a menor distância de Levenshtein.
Você pode verificar a distância de Levenshtein aqui!
Se o seu envio ficar sem crack por 7 dias, você poderá revelar o código alternativo que você escreveu e marcar seu envio como seguro.
fonte
Respostas:
Haskell , LD = 13, rachado
Experimente online!
Verifiquei duas vezes se os zeros à esquerda são aparados;)
Explicação:
fonte
cQuents 0 , LD = 1, Rachado
Experimente online!
Eu pensei que isso não funcionava para zeros à esquerda, mas na verdade funciona - a função reversa no cQuents é codificada como
int(reversed(str(n)))
.Explicação
fonte
JavaScript (ES6), LD = 103 ( quebrado )
Usar uma distância tão alta de Levenshtein provavelmente não é a melhor estratégia, mas vamos tentar de qualquer maneira.
Casos de teste
Mostrar snippet de código
Solução pretendida
Parte codificada:
fonte
+
garante que a sequência invertida seja coagida a um número.Python 2, 104 bytes, LD = 21 inválido E rachado
PS É permitida uma quantidade ilimitada de espaços em branco e comentários? Nesse caso, não será difícil de quebrar.fonte
\n
s (cerca de 50)6502 código de máquina (C64), LD = 1 ( rachado )
Demonstração online , uso:
sys49152,n
onden
está a entrada indexada em 0.Para o último caso de teste, você precisa de um pouco de paciência, pois essa má máquina precisa fazer milhões de mudanças de bits e adições para apresentar o resultado;)
A linguagem aqui é o código da máquina, então o LD é medido neste formato - no entanto, para dar algo para começar, aqui está o programa na
ca65
fonte do assembler:... e aqui está o script do vinculador para
ld65
:fonte
Perl 5 , 59 + 1 (
-a
) = 60 bytes, LD = 55Experimente online!
fonte
Java 8, (177 bytes) LD = 92 ( Rachado por @Arnauld )
( Eu usei esta calculadora LD online ) .
Provavelmente não é tão difícil se você simplesmente jogar isso. :)
Explicação:
Experimente aqui.
fonte
n->{String r="";for(int i=1;r.length()<=n+1;r+=new Long(new StringBuffer(i*i+++"").reverse()+""));return r.charAt(n);}
( 118 bytes, 92 LD )Oitava , LD = 63, Rachado
Experimente online!
O envio é de 77 bytes, então você precisa substituir um pouco =)
fonte
Código 6502 da máquina (C64), LD = 1, seguro
Demonstração online , uso:
sys49152,n
onden
está a entrada indexada em 0.Solução pretendida: (diff)
O
30
(código de operaçãobmi
) é substituído por90
(código de operaçãobcc
). Isso corresponde à seguinte parte na fonte do assembler:Funciona porque esse código verifica se um número é menor que 8. O
cmp
instrução executa uma subtração para isso, configurando os sinalizadores de acordo. Portanto, se o acumulador mantiver um número menor que 8, isso ocorrerá, limpando o sinalizador de transporte, portanto a instrução de ramificação correta será de fatobcc
.bmi
(ramificando quando negativo), como no código original, também funciona aqui, porque os números comparados são pequenos o suficiente, então o resultado da subtração termina no intervalo negativo ($80-$ff
) quando ocorre um subfluxo.Demonstração online
Esta é uma versão aprimorada / compactada do meu envio anterior . Entre outros truques para reduzir o tamanho, ele remove o código inútil que estava contido e permitiu uma espécie de crack "simples" *). Em suma, o tamanho é reduzido em 16 bytes. Desta vez, deve ser um pouco mais difícil encontrar o programa equivalente com o LD 1 :)
*) provavelmente ainda há muito trabalho a encontrar, é claro :)
Novamente, aqui está a
ca65
fonte do assembler, para ajudar a começar o código:... e aqui está o script do vinculador para
ld65
:fonte
Lua: LD = 1, rachado
Não há truques sofisticados aqui :)
fonte
Mathematica, LD = 43 trincado
Experimente online!
fonte
PHP, LD = 35 ( Rachado )
Indexado 1
Experimente online!
fonte
Python 3: LD = 9 | Rachado
Este deve ser bastante (muito) fácil de obter: P
fonte
.lstrip("0")
peça pode ser copiada.C ++, LD = 159
0 indexado, entrada
argv[1]
, compilado no GCC 7.2.0fonte
Groovy , 61 bytes (LD = 23)
Experimente online!
fonte