Fora de toda a matemática, sempre haverá alguns teoremas que vão além de todo senso comum. Um deles é o fato de que existem diferentes tamanhos de infinito. Outro fato interessante é a idéia de que muitos infinitos que parecem ter tamanhos diferentes são realmente do mesmo tamanho. Existem tantos números pares quanto números inteiros, pois existem números racionais.
O conceito geral desta questão é confrontar a realidade bizarra do infinito. Neste desafio, seu programa exibirá uma lista que:
- Em qualquer momento específico, sempre tenha um número inteiro de entradas
- Eventualmente, contenha (se houver tempo suficiente para executar) qualquer número racional específico (diferente de zero) precisamente uma vez na lista inteira
- Conter um número ilimitado de slots vazios (entradas na lista que são desnecessariamente definidas como 0)
- Tenha uma proporção de slots vazios que se aproxime de um limite de 100%
- Para todo número inteiro positivo N, tenha um número infinito de lugares com N espaços vazios consecutivos
O desafio
Seu desafio é escrever o programa mais curto possível que produzirá uma lista especial com as seguintes regras:
- Todas as entradas com um índice que não seja um número quadrado devem ser definidas como zero. Portanto, a primeira entrada será diferente de zero, a segunda e a terceira serão zero, a quarta será diferente de zero, etc.
- Todos os números racionais terão a forma de uma fração imprópria (como 4/5 ou 144/13) que foi simplificada. A exceção são zeros, que serão simplesmente
0
. - Todos os números racionais (positivos e negativos) devem aparecer na lista se o programa for executado por tempo suficiente e com memória suficiente. Para qualquer número racional específico, o tempo necessário pode ser uma quantidade arbitrariamente grande, mas sempre finita.
- Se executado por uma quantidade infinita de tempo, nenhum número racional diferente de zero deve aparecer duas vezes.
A regra 3 permite algumas variações, pois há um número infinito de diferentes saídas legais possíveis.
A saída será um fluxo de linhas. Cada linha terá a forma geral de 5: 2/3
onde o primeiro número é o número da entrada, seguido pelo número racional. Observe que 1: 0
sempre será a primeira linha de saída.
Exemplo de trecho de saída:
1: 1/1
2: 0
3: 0
4: 2/1
5: 0
6: 0
7: 0
8: 0
9: -2/1
10: 0
etc...
Regras, regulamentos e notas
Isso é código de golfe. Aplicam-se regras de código padrão de golfe. Além disso, devido à variação permitida na saída, você precisa pelo menos mostrar por que acredita que sua lista conterá todos os números racionais possíveis exatamente uma vez e que sua solução está correta.
EDIT: Como os números primos se distraíram do desafio, estou mudando para números quadrados. Isso cumpre o mesmo objetivo e também reduz as soluções.
1: 0
sempre será a primeira linha de saída. - Isso contradiz o seu exemplo e também não faz sentido para mim.