Escreva o programa ou a função mais curta que gera esses 1000 números ou uma sequência (indexada em 0 ou 1) que começa com eles.
[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
fonte
fonte
Respostas:
Geléia ,
1110 bytesGuardado 1 byte graças a @Dennis
Experimente online!
Como?
Notei pela primeira vez que o padrão alterna entre as corridas de comprimento 4 e 3, pulando a etapa de comprimento-4 a cada poucas corridas. Isso me levou a procurar um número que pudesse ser dividido no índice atual e, em seguida, adotado o mod 2 e colocado no chão - ou seja, recuperando o bit menos significativo - para fornecer o bit nesse índice da série. Após muitas tentativas e erros, descobri que
3.41845
faz exatamente isso, mas multiplicar por seu recíproco aproximado (.29253
) é um byte mais curto.fonte
Ḃ
mas aparentemente isso é apenas o mod 2 em vez do bit mais baixo, então eu adicionei oḞ
para corrigi-lo. Trocado agoraȷḶ×⁽q£:ȷ5Ḃ
funciona, por 10 bytes.Dyalog APL ,
998382 bytesExperimente online!
Definitivamente, não é a solução pretendida, pois ainda possui muitos dados codificados, mas é um começo.
fonte
Ruby ,
34 29 2622 bytesExperimente online!
Explicação rápida: isso funciona por causa do número mágico 629. Notei que a sequência começa a se repetir após o 629º elemento e tentei "melhorar" algumas respostas existentes, usando apenas matemática inteira. Descobri que o outro "número mágico" (0,29253) é na verdade 184/629.
fonte
Gelatina , 31 bytes
Dado o padrão, provavelmente existe uma maneira ainda mais curta ...
Experimente online!
Como?
Explora a estrutura de comprimento de execução repetida que é aparente a uma profundidade de três.
fonte
Java 8,
756462 bytesImprime a sequência inteira sem delimitador para salvar bytes, porque eles serão apenas
0
e de1
qualquer maneira.Portas da geléia do @ETHproductions 'respondem , porque duvido que encontre algo mais curto ..
Experimente online.
Explicação:
Resposta antiga retornando a matriz resultante ( 75 bytes ):
Experimente online.
Explicação:
fonte
JavaScript (Node.js) ,
4133 bytes, portaObrigado Rick Hitchcock por 4+ bytes
Experimente online!
JavaScript (Node.js) , 121 bytes, original
Experimente online!
fonte
f=(i=0)=>i<1e3?(i*.29253&1)+f(i+1):''
Stax ,
1311 bytesExecute e depure-o em staxlang.xyz!
Porta para Stax da resposta Jelly do @ ETHproductions (antes de sua modificação) com algumas modificações do @recursive para salvar dois bytes.
fonte
Wolfram Language (Mathematica) , 96 bytes
Procurei um autômato celular que olha para os quatro vizinhos à esquerda e produz o padrão de caminhada à esquerda visto nos dados quando você particiona os dados no comprimento 7 e mantém cada terceira linha.
Esse autômato celular funcionará por 29 gerações, cada uma das quais é triplicada, correspondendo perfeitamente à sequência dos caracteres 1 a 629. No entanto, a sequência começa a se repetir no 630º caractere em vez de continuar com o padrão observado, portanto, é necessário um código extra para lidar com a repetição de o padrão truncado. Eu gero o padrão principal duas vezes para obter 1258 caracteres.
Sem essa falha, poderíamos fazê-lo em 74 bytes mais curtos. 47 é o número de gerações necessárias para obter 1.000 caracteres (na verdade, isso é 1008 = 48 * 7 * 3)
Experimente online!
fonte
Z80Golf , 27 bytes
Experimente online!
Traduzido deste código C:
Desmontagem:
Essa é essencialmente uma abordagem aritmética de ponto fixo: (11149 + 65536) / 2 18 ± 0,29253, a constante usada por outras respostas.
fonte
J , 17 bytes
Porta AJ da resposta Jelly da ETHproduction.
Experimente online!
fonte
Japonês , 13 bytes
Versão japonesa da resposta Jelly da ETHproduction .
Bug corrigido graças a Oliver .
Experimente aqui.
fonte
Carvão vegetal , 13 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Agradecemos a @ ASCII-only por permitir que a indexação aceite flutuadores que são convertidos em número inteiro (e reduzimos automaticamente o módulo 2 neste caso).
fonte
C,
555352 bytesPorto de Kevin Cruijssen é Java resposta . Experimente online aqui .
Obrigado ao vazt por jogar 2 bytes e a Jonathan Frech por jogar mais um.
Versão não destruída:
fonte
i
é inicializado como 0, pois é global; portanto, você pode remover oi=0
inicializador de loop for para salvar 3 bytes. Além disso, se você introduzir uma segunda variável (como parâmetro paraf()
) e atribuiri++*.29253
a ela, poderá evitar a conversão e salvar outros 2 bytes:i;f(j){for(;i<1e3;)printf("%d",(j=i++*.29253)%2);}
Experimente online!i
é inicializado com 0 no início, mas se quisermos chamar essa função mais de uma vez, isso não será suficiente. Usarj
para evitar o elenco é um ótimo golfe, obrigado./// , 63 bytes
Experimente online!
fonte