De todas las matemáticas, siempre habrá algunos teoremas que van más allá del sentido común. Uno de estos es el hecho de que hay diferentes tamaños de infinito. Otro hecho interesante es la idea de que muchos infinitos que parecen ser de diferente tamaño son en realidad del mismo tamaño. Hay tantos números pares como enteros, ya que hay números racionales.
El concepto general de esta pregunta es confrontar la extraña realidad del infinito. En este desafío, su programa generará una lista que:
- En cualquier momento específico, siempre tenga un número entero de entradas
- Eventualmente contenga (si se deja que se ejecute lo suficiente) cualquier número racional específico (que no sea cero) precisamente una vez en toda la lista
- Contiene un número ilimitado de ranuras vacías (entradas en la lista que se establecen innecesariamente en 0)
- Tener una proporción de espacios vacíos que se acerque a un límite del 100%
- Por cada entero positivo N, tenga un número infinito de lugares con N ranuras vacías consecutivas
El reto
Su desafío es escribir el programa más corto posible que generará una lista especial con las siguientes reglas:
- Todas las entradas con un índice que no sea un número cuadrado deben establecerse en cero. Entonces, la primera entrada será distinta de cero, la segunda y la tercera serán cero, la cuarta será distinta de cero, etc.
- Todos los números racionales tendrán la forma de una fracción impropia (como 4/5 o 144/13) que se ha simplificado. La excepción son los ceros, que serán simplemente
0
. - Todos los números racionales (positivos y negativos) deberían aparecer eventualmente en la lista si su programa se ejecuta durante el tiempo suficiente y con suficiente memoria. Para cualquier número racional particular, el tiempo requerido puede ser una cantidad arbitrariamente grande, pero siempre finita.
- Si se ejecuta durante una cantidad de tiempo infinita, ningún número racional distinto de cero debería aparecer dos veces.
La regla 3 permite alguna variación, ya que hay un número infinito de diferentes resultados legales posibles.
La salida será un flujo de líneas. Cada línea tendrá la forma general de 5: 2/3
donde el primer número es el número de entrada, seguido del número racional. Tenga en cuenta que 1: 0
siempre será la primera línea de salida.
Fragmento de ejemplo de salida:
1: 1/1
2: 0
3: 0
4: 2/1
5: 0
6: 0
7: 0
8: 0
9: -2/1
10: 0
etc...
Reglas, Regulaciones y Notas
Este es el código de golf. Se aplican las reglas estándar del código de golf. Además, debido a la variación permitida en la salida, debe mostrar al menos por qué cree que su lista contendrá todos los números racionales posibles exactamente una vez, y que su solución es correcta.
EDITAR: Dado que los números primos distrajeron del desafío, lo estoy cambiando a números cuadrados. Esto cumple el mismo propósito y también acorta las soluciones.
1: 0
siempre será la primera línea de salida. - Esto contradice tu ejemplo y tampoco tiene sentido para mí.