Este es un desafío de policías y ladrones. Este es el hilo del policía. El hilo del ladrón está aquí .
Como policía, debe elegir cualquier secuencia del OEIS y escribir un programa p que imprima el primer entero de esa secuencia. También debes encontrar algunas cadenas s . Si inserta s en algún lugar de p , este programa debe imprimir el segundo entero de la secuencia. Si inserta s + s en la misma ubicación en p , este programa debe imprimir el tercer entero de la secuencia. s + s + s en la misma ubicación imprimirá el cuarto, y así sucesivamente. Aquí hay un ejemplo:
Python 3, secuencia A000027
print(1)
La cadena oculta es de dos bytes .
La cadena es +1
, porque el programa print(1+1)
imprimirá el segundo entero en A000027, el programa print(1+1+1)
imprimirá el tercer entero, etc.
Los policías deben revelar la secuencia, el programa original p y la longitud de la cadena oculta s . Los ladrones descifran una presentación al encontrar cualquier cadena de esa longitud y la ubicación para insertarla para crear la secuencia. La cadena no necesita coincidir con la solución prevista para ser una grieta válida, ni tampoco la ubicación en la que se inserta.
Reglas
Su solución debe funcionar para cualquier número en la secuencia, o al menos hasta un límite razonable en el que falla en restricciones de memoria, desbordamiento de enteros / pila, etc.
El ladrón ganador es el usuario que descifra la mayor cantidad de envíos, siendo el desempate el que alcanzó ese número de grietas primero.
El policía que gana es el policía con la cadena más corta s que no está agrietada. Tiebreaker es el más corto p . Si no hay envíos no descifrados, el policía que tenía una solución descifrada para ganar más tiempo.
Para ser declarado seguro, su solución debe permanecer sin descifrar durante 1 semana y luego debe revelar la cadena oculta (y la ubicación para insertarla).
s no puede estar anidado, debe concatenarse de extremo a extremo. Por ejemplo, si s fuera
10
, cada iteración iría en10, 1010, 101010, 10101010...
lugar de10, 1100, 111000, 11110000...
Es aceptable comenzar con el segundo término de la secuencia en lugar del primero.
Si su secuencia tiene un número finito de términos, pasar el último término puede generar un comportamiento indefinido.
Todas las soluciones criptográficas (por ejemplo, verificar el hash de la subcadena) están prohibidas.
Si s contiene caracteres no ASCII, también debe especificar la codificación que se está utilizando.
fuente
Respuestas:
MAT , secuencia A005206 . Agrietado por SamYonnou
Pruébalo en línea!
La cadena oculta tiene 8 bytes .
fuente
Python 2 , secuencia A138147 ( agrietada )
Pruébalo en línea!
La cadena oculta es de 7 bytes . La secuencia va:
fuente
Barrilete , secuencia A000045
La cadena oculta es ≤ 6 bytes (para cumplir con las reglas de craqueo actualizadas)
fuente
Agrietado
Brain-Flak , secuencia A000290 (números cuadrados)Pruébalo en línea!
La cadena oculta es de 6 bytes .
Hecho de la diversión:
"Descubrí" esta propiedad mientras jugaba este juego basado en el cerebro . La cadena oculta era un elemento generado aleatoriamente que descubrí que era muy útil.
fuente
Java 8+, secuencia A010686 ( descifrado por xnor )
Función lambda.
La cadena oculta es ≤ 5 bytes
fuente
^2<<1
pero eso es lo mismo.Python 3 , secuencia A096582
Esto es realmente trivial, ya que no he probado los desafíos de policías y ladrones antes.
La cadena oculta es de 3 bytes.
fuente
Pyret , secuencia A083420 , Agrietada
La cadena oculta tiene 4 bytes o menos.
fuente
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!
fuente
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.
fuente
V, sequence A000290. Cracked by Cows quack
Try it online!
The hidden string is 5 bytes.
fuente
Desktop Calculator, sequence A006125
The hidden string ≤ 12 bytes.
fuente
Brain-Flak, sequence A000984 (central binomial coefficients)
Try it online!
The hidden string has 36 bytes or fewer.
fuente
Python 3, A268575
Try it online!
The hidden sequence is 102 bytes.
fuente
Haskell, sequence A083318 (cracked)
Try it online!
The hidden string is 5 bytes. The sequence goes:
fuente
Brain-Flak, sequence A000578 (Cube numbers)
Try it online!
The hidden string is 16 bytes
fuente
Cracked
cQuents, sequence A003617Try it online!
The hidden string is 1 byte.
fuente
Unefunge-98 (PyFunge), sequence A000108
Try it online!
The hidden sequence is 19 bytes.
fuente
MATL, sequence A000796. Cracked by SamYonnou
Try it online!
The hidden string has 3 bytes.
fuente
Python 3, A008574, cracked by xnor
Try it online!
Insert 4 bytes to complete A008574. A008574: a(0)=1, thereafter a(n) = 4n.
fuente
AsciiDots, 36 bytes, A019523
Try it online!
The hidden string has 12 bytes.
fuente
Haskell, sequence A014675, cracked by nimi
Try it online!
The hidden sequence is 35 bytes.
Here's my intended solution:
fuente
VDM-SL, sequence A000312
The hidden string has 33 bytes or fewer
fuente
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:
fuente
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
fuente
Brachylog, 7 bytes (Brachylog SBCS), A114018 (Cracked)
Crack it online!
The string has 2 or fewer bytes.
fuente
b
is fairly suspicious…C# (.NET Core), A003678, 29727 bytes (Safe)
The hidden sequence is 4 bytes or less.
fuente
.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
fuente