Escriba el programa o función más corta que genere estos 1000 números o una secuencia (indexada 0 o 1) que comience con ellos.
[0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]
code-golf
sequence
kolmogorov-complexity
john mangual
fuente
fuente
Respuestas:
Jalea ,
1110 bytesGuardado 1 byte gracias a @Dennis
Pruébalo en línea!
¿Cómo?
Primero noté que el patrón alterna entre carreras de longitud 4 y longitud 3, omitiendo el paso de longitud 4 cada pocas carreras. Esto me llevó a buscar un número que podría dividirse en el índice actual, luego tomar mod 2 y anclar, es decir, recuperar el bit menos significativo, para dar el bit en ese índice en la serie. Después de mucho ensayo y error, descubrí que
3.41845
hace exactamente eso, pero multiplicar por su recíproco aproximado (.29253
) es un byte más corto.fuente
Ḃ
pero aparentemente eso es solo mod 2 en lugar del bit más bajo, así que agregué elḞ
para solucionarlo. Intercambiado ahoraȷḶ×⁽q£:ȷ5Ḃ
funciona, por 10 bytes.Dyalog APL ,
998382 bytesPruébalo en línea!
Definitivamente no es la solución prevista, ya que todavía tiene muchos datos codificados, pero es un comienzo.
fuente
Ruby ,
34 29 2622 bytesPruébalo en línea!
Explicación rápida: esto funciona debido al número mágico 629. Noté que la secuencia comienza a repetirse después del elemento 629, e intenté "mejorar" alguna respuesta existente, usando solo matemáticas enteras. Descubrí que el otro "número mágico" (0.29253) es en realidad 184/629.
fuente
Jalea , 31 bytes
Dado el patrón, probablemente haya una forma aún más corta ...
Pruébalo en línea!
¿Cómo?
Explota la estructura de longitud de ejecución repetitiva que es evidente a una profundidad de tres.
fuente
Java 8,
756462 bytesImprime la secuencia completa sin delimitador para guardar bytes, ya que solo serán
0
y de1
todos modos.Los puertos de la respuesta Jelly de @ETHproductions , porque dudo que encuentre algo más corto ...
Pruébalo en línea.
Explicación:
Respuesta anterior que devuelve la matriz resultante ( 75 bytes ):
Pruébalo en línea.
Explicación:
fuente
JavaScript (Node.js) ,
4133 bytes, puertoGracias Rick Hitchcock por 4+ bytes
Pruébalo en línea!
JavaScript (Node.js) , 121 bytes, original
Pruébalo en línea!
fuente
f=(i=0)=>i<1e3?(i*.29253&1)+f(i+1):''
Stax ,
1311 bytes¡Ejecútelo y depúrelo en staxlang.xyz!
Puerto a Stax de la respuesta Jelly de @ ETHproductions (antes de su modificación) con algunas modificaciones de @recursive para guardar dos bytes.
fuente
Wolfram Language (Mathematica) , 96 bytes
Busqué un autómata celular que mire a los 4 vecinos a la izquierda y produzca el patrón de caminar a la izquierda que se ve en los datos cuando divide los datos en longitud 7 y mantiene cada tercera fila.
Este autómata celular funcionará durante 29 generaciones, cada una de las cuales está triplicada, haciendo coincidir la secuencia perfectamente para los caracteres 1 a 629. Sin embargo, la secuencia comienza a repetirse en el carácter 630 en lugar de continuar el patrón observado, por lo que se necesita un código adicional para manejar la repetición de El patrón truncado. Genero el patrón principal dos veces para llegar a 1258 caracteres.
Sin esa falla podríamos hacerlo en 74 bytes más cortos. El 47 es el número de generaciones necesarias para llegar a 1000 caracteres (esto en realidad va a 1008 = 48 * 7 * 3)
Pruébalo en línea!
fuente
Z80Golf , 27 bytes
Pruébalo en línea!
Traducido de este código C:
Desmontaje
Este es esencialmente un enfoque aritmético de punto fijo: (11149 + 65536) / 2 18 ≈ 0.29253, la constante utilizada por otras respuestas.
fuente
J , 17 bytes
AJ puerto de la respuesta Jelly de ETHproduction.
Pruébalo en línea!
fuente
Japt , 13 bytes
Versión Japt de la respuesta Jelly de ETHproduction .
Error solucionado gracias a Oliver .
Pruébalo aquí.
fuente
Carbón , 13 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Gracias a @ ASCII-only por permitir que la indexación acepte flotantes que se convierten en enteros (y luego reducen automáticamente el módulo 2 en este caso).
fuente
C,
555352 bytesLa respuesta Java del puerto de Kevin Cruijssen . Pruébelo en línea aquí .
Gracias a vazt por jugar al golf 2 bytes y a Jonathan Frech por jugar al golf uno más.
Versión sin golf:
fuente
i
se inicializa a 0 ya que es global, por lo que puede eliminarlo deli=0
inicializador for-loop para guardar 3 bytes. Además, si introduce una segunda variable (como parámetro paraf()
) y le asignai++*.29253
, puede evitar la conversión y guardar otros 2 bytes: ¡i;f(j){for(;i<1e3;)printf("%d",(j=i++*.29253)%2);}
Pruébelo en línea!i
se inicializa a 0 al principio, pero si queremos llamar a esta función más de una vez, eso no es suficiente. Usarj
para evitar el yeso es un gran golf, gracias./// , 63 bytes
Pruébalo en línea!
fuente