Seu trabalho é criar o período de iteração de período mais longo , em que o comprimento de cada programa na sequência é limitado por 500 bytes.
Ou seja, se você repetir as seguintes etapas:
- Comece com seu programa inicial
- Execute o programa atual
- Volte ao passo 2
Você retornará ao seu programa original. O número de programas no ciclo é sua pontuação, que você está tentando maximizar.
Nenhum dos programas pode gerar erros. Cada programa também deve ser executado da mesma maneira (por exemplo, versões, implementações, opções de compilador, plataformas, etc ...) diferentes (EDIT: Sim, qualquer estado externo, como o de um gerador de números pseudo-aleatórios, foi incluído no último O estado externo deve ser "redefinido" após cada execução. Se você usar números aleatórios verdadeiros, o pior caso será assumido.)
O que separa esse desafio do período de iteração de período mais longo (que não seja 100 vs 500) é que todo programa no ciclo também deve ter 500 bytes ou menos. Isso significa que o ciclo mais longo possível é (256 ^ 501 - 1) / 255 ou menos. É claro que é um número grande, mas não tão grande em termos de quanto código é necessário para calcular. Portanto, o desafio é usar o maior número possível de possibilidades (256 ^ 501 - 1) / 255, não um desafio de castor ocupado.
Os programas não têm permissão para acessar seu próprio código-fonte. No entanto, um programa vazio é permitido se você desejar (desde que siga as outras regras).
Como a verificação manual dos programas seria difícil, você pode descobrir a pontuação usando métodos teóricos. Você deve incluir uma explicação da pontuação e correção no seu programa. Se você não conseguir descobrir a pontuação, use um limite inferior do número de programas no ciclo como uma pontuação defacto. Você pode atualizar isso à medida que encontrar melhores limites inferiores ou se encontrar a pontuação exata.
Este é um desafio de código , então a pontuação mais alta vence!
EDIT: Recomenda-se que você escreva qual é a sua pontuação em notação científica, para que as respostas sejam mais facilmente comparáveis. É perfeitamente bom ter outras formas de pontuação também, especialmente se elas estiverem mais claramente conectadas ao seu programa. Além disso, os leitores são incentivados a editar respostas anteriores para cumprir isso.