Este es un desafío de policías y ladrones . El hilo de los ladrones está aquí .
Una pregunta interesante para pensar es la siguiente:
Si tengo una secuencia de números, ¿cuántos de ellos debo proporcionar antes de que quede claro de qué secuencia estoy hablando?
Por ejemplo, si quiero hablar sobre los enteros positivos en orden a partir de , podría decir , pero ¿es eso realmente suficiente?
Tengo una manera de responder a esta pregunta, y ser un jugador de código implica el código de golf. Ha proporcionado suficientes términos de una secuencia si el código más corto que produce esos términos produce todos los términos de la secuencia. Si pensamos en esto en términos de código de golf, esto significaría que ha proporcionado suficientes casos de prueba para que el código más corto que pasa los casos de prueba haga la tarea deseada.
Reto
Este desafío es un desafío de policías y ladrones . En el cual los policías presentarán casos de prueba y los ladrones tendrán que encontrar una forma más corta de falsificar los casos de prueba que no sea la secuencia prevista. Los policías presentarán lo siguiente:
Una pieza de código que toma un entero no negativo como entrada y produce un entero como salida. Este código definirá su secuencia. Su código no necesita soportar 0 como entrada, optando por tomar 1 como la entrada más pequeña. Debe quedar claro si este es el caso en su respuesta.
Cualquier plataforma relevante o requisitos de idioma que puedan afectar la salida, por ejemplo, el tamaño de la letra larga.
Un número , junto con los primeros términos de la secuencia calculados por el código. Estos actuarán como "casos de prueba".
Se le recomienda que explique qué hace su secuencia y enlace OEIS si existe, sin embargo, es su código el que define la secuencia, no la descripción.
Los ladrones encontrarán un programa en el mismo lenguaje que es más corto que el presentado y pasa todos los casos de prueba (produce la misma salida para las primeras entradas que el código del policía). El código del ladrón también debe diferir en la salida del programa del policía para un número mayor que n .
Los policías deben poder descifrar sus propias respuestas antes de enviarlas.
Después de una semana, un policía puede revelar su crack y marcar su respuesta como segura. Las respuestas marcadas como tales ya no se pueden descifrar.
Tanteo
Las respuestas de los policías se puntuarán por el número de bytes, con menos bytes mejor. Las respuestas agrietadas obtienen una puntuación infinita.
fuente
Respuestas:
cQuents , 4 bytes ( agrietado )
Pruébalo en línea!
Aquí hay ocho (
n=8
) casos:Explicación del código:
Entonces, la secuencia es
1,2,3,4,5 ...
, se une""
para que se convierta12345 ...
, y::
significa que se imprime en la entrada.fuente
Python 3 ,
6657 bytes ( Agrietado )agrietado por xnor
también agrietado por Cat Wizard antes de una edición
Pruébalo en línea!
¡Hola! Aquí hay una secuencia para descifrar para . Da a estos primeros 40 elementos con indexación 0, no es una secuencia OEISn=40
fuente
Python 2 , 44 bytes ( agrietado )
Pruébalo en línea!
Los números primos. ¿Qué secuencia podría ser más pura? ¿O más exagerado ? Su objetivo es producir los primeros 50 números primos para
n=1
an=50
.El código es un generador del Teorema de Wilson copiado exactamente de este consejo .
Los diferentes valores para la secuencia alternativa no se deben a limitaciones de la máquina, como desbordamientos y precisión. No hay bibliotecas de terceros.
Agrietado por Arnauld, @PoonLevi y el Sr. Xcoder.
fuente
Wolfram Language (Mathematica) ,
3934 bytes (Seguro)Pruébalo en línea!
Parece simple, la solución debería ser difícil.
1 indexado . Esta secuencia no está disponible en el OEIS.n=99
Esta lista anterior es igual a:
Aquí hay una plantilla para verificar su solución: ¡ Pruébelo en línea!
Grieta prevista
fuente
Haskell , 29 bytes (Agrietado: 1 , 2 )
Pruébalo en línea!
Esto es A093005 : .a ( n ) = n ⌈ n2⌉
Casos de prueba para , es decir :0 ≤ n ≤ 20
map a [0..20]
Solución prevista (20 bytes)
Pruébalo en línea! Difiere en , con una ( 23 ) = 276 y b ( 23 ) = 253 .n = 23 a ( 23 ) = 276 b ( 23 ) = 253
Esta función es equivalente a . Gracias al techo, ambas funciones se superponen para argumentos enteros en el rango de 0 a 22 :b ( n ) = n l e n ( 3 norte) = n ⌈ l o g10( 1 + 3norte) ⌉ 0 0 22
fuente
fuente
JavaScript (ES6), 12 bytes ( agrietado )
Este es bastante fácil.
Pruébalo en línea!
Esta es A139275 :
Y según las reglas del desafío, debe divergir más allá.
fuente
n=>8*n*n+n
difiere paran=94906273
, ¿es esta una grieta válida?n=9
embargo, la grieta prevista es diferente .|
lugar de+
)Malbolge, 10 bytes
Tenga en cuenta que el código termina con un byte 0x14 (control de dispositivo 4).
Pruébalo en línea!
La secuencia indexada a 0 para crackear es
[9, 19, 29]
.fuente
> <> , 276 bytes ( Agrietado )
Pruébalo en línea! Llama a este con
-v n
para obtener el elemento n-ésimo (1 indexado)Pruébalo en línea!Llame con
-v n
para obtener una lista de elementos n-1 que comienzan en 1Intérprete de pescado en línea
Una larga y compleja, esta es OEIS A004000 .
Debido a que el código en> <> es bastante largo, el desafío es descifrarlo porn = 34 . Estos 34 elementos hacen un total de 290 bytes, demasiado para codificar el resultado;)
Aquí están los 34 primeros elementos indexados en 1
fuente
n
(como lo requiere la pregunta)?Jalea , 6 bytes , ¡Seguro!
Esto define una secuencia de índice cero donde:
Como tal, los primeros dieciséis valoresa ( 0 ) ⋯ a ( 15 ) son
1,1,1,2,2,3,4,5,6,7,8,9,10,11,12,13
Pruébalo en línea! ( aquí hay una versión de valor único)
Esto no está actualmente en el OEIS (aunque A34138 funcionará como un crack si es lo suficientemente corto)
Grieta prevista
fuente
JavaScript, 26 bytes ( agrietado )
OEIS A007660
La salida son los primeros 6 elementos con indexación 0 (1,1,2,3,7,22)
(algo cambiado de lo que OEIS tiene en la lista)
Simplemente creando una respuesta fácil de resolver para comenzar
Pruébalo en línea!
fuente
JavaScript, 16 bytes ( agrietado )
Los primeros 5 elementos de OEIS149 (⌊ enorte⌋ )
Las entradas requeridas para coincidir son 0,1,2,3,4.
Pruébalo en línea!
fuente
APL (Dyalog Unicode) ,
1715 bytesPruébalo en línea!
Los primeros 13 términos (basados en 1) son:
Sugerencia: la solución prevista utiliza una de las funciones integradas menos utilizadas.
fuente
Casco , 5 bytes ( descifrado por Jonathan Allan )
Este es A000030 desplazado pordieciséis :
Pruébalo en línea!
La secuencia está indexada a 0, salida para0 ≤ n < 23 :
Explicación
Solución
fuente
JavaScript, 25 bytes ( Cracked 21 bytes)
Secuencia de 7,11,12,13,13 seguida de 14s infinitos.
Solución prevista 22 bytes:
Pruébalo en línea!
fuente
JavaScript, 22 bytes ( agrietado )
Esto es 0 indexado y se requiere precisión hasta una entrada de 15. No se puede encontrar en OEIS
Mi solucion 20 bytes
Pruébalo en línea!
fuente
> <> , 42 bytes, agrietado
Pruébalo en línea!
Secuencia para crackear (indexada a 0):
101786, 5844, 19902
(no en OEIS).Solución prevista , para referencia.
fuente
4
Perl 6 , 53 bytes
Pruébalo en línea!
Bloque de código anónimo que devuelve la secuencia de Kolakoski indexada en 0 ( OEIS A000002 ). Se requieren soluciones para que coincidan con los primeros 130 elementos, por lo que para algunos
n > 129
difiere de la secuencia de Kolakoski.fuente
Pascal (FPC) , 86 bytes ( agrietado )
Pruébalo en línea!
La secuencia debe ser igual hastanorte = 120 . La secuencia de la entrada 0 a la entrada 120 es
Mi solución original fue
¡pero r_64 lo hizo aún mejor !
fuente