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.
fonte
Respostas:
MATL , sequência A005206 . Rachado por SamYonnou
Experimente online!
A cadeia oculta tem 8 bytes .
fonte
Python 2 , sequência A138147 ( quebrada )
Experimente online!
A cadeia oculta é de 7 bytes . A sequência é a seguinte:
fonte
Barril , sequência A000045
A cadeia oculta é ≤ 6 bytes (para estar em conformidade com as regras de cracking atualizadas)
fonte
Cracked
Brain-Flak, sequence A000290 (Square numbers)Try it online!
The hidden string is 6 bytes.
Fun fact:
I "discovered" this property while playing this brain-flak based game. The hidden string was a randomly generated item that I discovered was very useful.
fonte
Java 8+, sequence A010686 (cracked by xnor)
Lambda function.
The hidden string is ≤ 5 bytes
fonte
^2<<1
but that's the same thing.Python 3, sequence A096582
This is really trivial, as I haven't tried Cops and Robbers challenges before.
The hidden string is 3 bytes.
fonte
Pyret, sequence A083420, Cracked
The hidden string has 4 bytes or fewer.
fonte
Python 3, sequence A014092 - (cracked)
Try it online!
The hidden sequence is 82 bytes.
My intended code (which doesn't rely on the Goldbach Conjecture) was:
Cracked by NieDzejkob, who uses the Goldbach Conjecture to solve it in a magical 42 characters. Great job!
fonte
Forth (gforth), A000042 - (cracked)
Try it online!
The hidden sequence is 5 bytes, and it can easily handle hundreds of terms.
A one-byte solution that breaks due to integer overflow is also possible. In fact, I'd say it is embarrassingly trivial. While the challenge text, under some interpretations, might allow you to call that a crack, I urge you not to.
fonte
V, sequence A000290. Cracked by Cows quack
Try it online!
The hidden string is 5 bytes.
fonte
Desktop Calculator, sequence A006125
The hidden string ≤ 12 bytes.
fonte
Brain-Flak, sequence A000984 (central binomial coefficients)
Try it online!
The hidden string has 36 bytes or fewer.
fonte
Python 3, A268575
Try it online!
The hidden sequence is 102 bytes.
fonte
Haskell, sequence A083318 (cracked)
Try it online!
The hidden string is 5 bytes. The sequence goes:
fonte
Brain-Flak, sequence A000578 (Cube numbers)
Try it online!
The hidden string is 16 bytes
fonte
Cracked
cQuents, sequence A003617Try it online!
The hidden string is 1 byte.
fonte
Unefunge-98 (PyFunge), sequence A000108
Try it online!
The hidden sequence is 19 bytes.
fonte
MATL, sequence A000796. Cracked by SamYonnou
Try it online!
The hidden string has 3 bytes.
fonte
Python 3, A008574, cracked by xnor
Try it online!
Insert 4 bytes to complete A008574. A008574: a(0)=1, thereafter a(n) = 4n.
fonte
AsciiDots, 36 bytes, A019523
Try it online!
The hidden string has 12 bytes.
fonte
Haskell, sequence A014675, cracked by nimi
Try it online!
The hidden sequence is 35 bytes.
Here's my intended solution:
fonte
VDM-SL, sequence A000312
The hidden string has 33 bytes or fewer
fonte
Haskell, A000045 (Fibonacci) -- Cracked
I've got a solution with a whopping 23 bytes. I don't expect this to be safe for long, but it was super fun to come up with.
Solution:
fonte
Java 8+, 1044 bytes, sequence A008008 (Safe)
Try it online!
Can be solved using a hidden string of size 12. Can definitely be golfed more, but there is no way this is actually winning. I just wanted to contribute out of respect for the number 8008.
Note: before anyone complains that the sequence is hard-coded, I've tested this up to the first term that diverges from the hard-coding (13th term = 307) and it gets it correctly albeit slowly. This is also why it's using
long
instead ofint
, otherwise it overflows before that term.Update (Jul 12 2019): updated to be a bit more performant. Computes the 13th term in 30 seconds on my computer now instead of 5 minutes.
Update (Jul 17 2019): fixed bugs in for loop bounds for the
g
function, and array length bounds in the bottom of thef
function. These bugs should have eventually caused problems, but not early enough to get caught by just checking the output. In either case, since the presence of these bugs 5 days into the game might have confused some people enough into being unable to solve this puzzle, I am totally fine with extending the "safe" deadline until July 24th for this submission.Update (Jul 18 2019): After some testing I have confirmed that overflows start after the 4th term in the sequence and start affecting the validity of the output after the 19th term. Also in the program as it is written here, each consecutive term takes roughly 5 times longer than the previous to compute. The 15th term takes about 14 minutes on my computer. So actually computing the 19th term using the program as written would take over 6 days.
Also, here is the code with sane spacing/indentation so it is a bit easier to read if people don't have an IDE with auto-formatting on hand.
Solution
fonte
Brachylog, 7 bytes (Brachylog SBCS), A114018 (Cracked)
Crack it online!
The string has 2 or fewer bytes.
fonte
b
is fairly suspicious…C# (.NET Core), A003678, 29727 bytes (Safe)
The hidden sequence is 4 bytes or less.
fonte
.code.tio(1,284): error CS0103: The name 'CodeDomProvider' does not exist in the current context .code.tio(1,390): error CS0246: The type or namespace name 'CompilerParameters' could not be found (are you missing a using directive or an assembly reference?)
System.CodeDom
, also it creates files so it won't work on tioSystem.CodeDom
Prolog (SWI), 28 bytes, A011557, safe
Try it online!
(I'm not really sure what counts as a full program for Prolog, but this works as a program on TIO.)
The hidden string is 5 bytes or less.
I'm a bit surprised this survived a week... The hidden string is
fonte