No es un engaño a esto . Esa pregunta pide específicamente contar para siempre, mientras que esta pregunta permite muchos otros enfoques.
Escriba un programa o función que, dado el tiempo y la memoria infinitos, imprima una salida no periódica infinita.
Aclaraciones
- 'Infinito' significa que la solución sigue generando algo sin más entradas u operaciones después de iniciar con éxito el programa o la función.
- 'No periódico' significa que la salida no tiene posibilidad de repetir eventualmente la misma sección para siempre (independientemente de la duración de ese período). Un ejemplo de una solución válida sería imprimir los dígitos de un número irracional.
- Las soluciones aleatorias no contarían a menos que pueda probar que cumple con los requisitos. Las soluciones basadas en fecha / hora también pueden no ser válidas si no se almacenan con precisión arbitraria.
Ganador
El código más corto (en bytes) gana.
1\n12\n123
no es válido?Respuestas:
Hexagonía , 2 bytes.
Pruébalo en línea!
El código fuente desplegado se ve así:
Esto solo ejecuta estos dos comandos en un bucle, que son decrement (
(
) e print (!
). Por lo tanto, la salida es:Necesitamos usar decremento en lugar de incremento para asegurarnos de que el programa regrese a la primera línea (si el valor de la memoria fue positivo, Hexagony realizaría un bucle entre la segunda y la tercera línea y terminaría en un bucle infinito sin hacer nada).
fuente
Python 2 , 23 bytes
Pruébalo en línea!
Huellas dactilares
y así. Comienza con la función incorporada
id
, el nombre de variable preinicializado más corto, y lo convierte repetidamente en una tupla de sí mismo.En Python 3, esta solución tarda un byte más
print()
, pero el byte se puede recuperar de laprint
salidaNone
:o
fuente
Laberinto , 3 bytes
Pruébalo en línea!
Imprime todos los enteros pares no negativos sin separador:
La IP rebota de un lado a otro en el código, por lo que esto realmente está
#:!:
en un bucle:Un montón de alternativas:
fuente
Brachylog , 2 bytes
Pruébalo en línea!
Esto imprime todos los enteros ordenados por magnitud. Esto nunca se desbordará e imprimirá enteros ya vistos ya que Brachylog usa enteros ilimitados de forma predeterminada.
Explicación
fuente
> <>, 3 bytes
l:n
Emite una secuencia de números, contando desde 0.
Creo que los números incrementales no circulan ...
Explicación:
l
empuja la longitud de la pila sobre la pila:
duplica el valor de la pila superior sobre la pilan
da salida al valor como númeroCuando la línea termina, vuelve al principio, por lo que lo vuelve a hacer, pero ahora la pila es más larga ...
en línea
fuente
PHP, 20 bytes
Salidas esto:
Si se proporcionan argumentos de línea de comando, la salida será diferente, pero aún no periódica.
Hasta donde entiendo la documentación, el lenguaje en sí no restringe la longitud de las cadenas.
fuente
JavaScript,
262220 bytes(Advertencia: es malvado)
fuente
for(n=0;;)alert(n++)
for(;;)alert(Date())
por 20 bytes.Haskell - 10 bytes
Aunque en ghci podría escribir [1 ..] y eso comenzaría a imprimir automáticamente.
fuente
Brainfuck, 13 Bytes, asumiendo que no hay modulación superior pero salida 256
código de salida 2 2 4 6 2 4 6 8 10 12 14 16 18 ...
lo siento, el antiguo bucle de impresión de código 0 2 4 6 ... 254,
Brainfuck,
1312 Bytes (-1 de Jo King)código char de salida 0 1 0 1 1 0 1 1 1 0 ...
fuente
[.>].
en[>.]
?+[[>.]<[<]+]
imprime 010110111011110 ...Thanks
+[[>.]<[<],]
y barra de entrada de relleno con'\1'
Jalea , 3 bytes
Pruébalo en línea! - trunca la salida y genera un error, pero durará mucho más localmente (hasta que se agote la memoria).
Con una entrada implícita de cero, este programa consiste en un único enlace que incrementa
‘
, imprimeȮ
y luego se llama a sí mismo con el nuevo valorß
,.fuente
MATL, 4 bytes
Esta solución crea un
while
bucle que empuja el índice del bucle a la pila, lo duplica, imprime el valor y luego comprueba que el índice del bucle no sea cero para repetirlo nuevamente.Pruébalo en línea!
fuente
RProgN 2 , 13 bytes
Hay muchos dos en la salida, separados por nuevas líneas progresivamente más espaciadas.
Que imprime 2 ^ n 2s seguido de una nueva línea para cada iteración.
Pruébalo en línea!
fuente
Befunge , 4 bytes
Pruébalo en línea!
En Befunge, la pila no tiene fondo y tiene ceros infinitos. Eso dijo:
1+
agrega uno a la parte superior de la pila:
duplica la parte superior de la pila.
imprime el valor ASCII de la parte superior de la pila como un númeroY continúa infinitamente, porque no hay forma
@
de detener la ejecución. Este es en realidad uno de esos problemas más fáciles de resolver por la forma en que funciona befunge ... raro.fuente
APL (Dyalog APL) , 8 bytes
{
emsp; una función anónima ...∇
recurse en⎕ ←
salida a STDOUT0 ⍵
la lista de dos elementos que consiste en un cero y el argumento}
aplicado al número unoEste salidas (en líneas separadas)
[0,1]
,[0,[0,1]]
,[0,[0,[0,1]]]
, etc.fuente
Procesamiento,
3029 bytes1 byte guardado gracias a QwerpDerp por usar en
millis()
lugar deframeRate
Imprime continuamente el número de milisegundos desde el inicio del programa.
Salida de muestra:
fuente
C (gcc) ,
8381 bytesPrimero asignando un puntero en el montón, la función luego cuenta hacia atrás en las direcciones de memoria hasta que se produzca una falla predeterminada
*p++
, por lo tanto, está limitada por la cantidad de memoria en el sistema en lugar de los tipos de datos utilizados que de otro modo eventualmente se desbordarían y repetirían la serie. Dada una memoria infinita con capacidad de direccionamiento infinito, continuaría para siempre.Pruébalo en línea!
fuente
p++
para hacer mi reclamo.7 , 2 bytes
Los personajes que componen este programa son:
Al ver el archivo en un editor, es probable que intente interpretarlo como ASCII, en cuyo caso se ve así:
Pruébalo en línea!
El programa toma entrada. He asumido aquí que la entrada está en EOF; si le proporciona información, es posible que se bloquee.
Explicación
Iteración cero
Todo el programa aquí es pasivo, por lo que agregará una versión activa de sí mismo al elemento de la pila superior (que inicialmente está vacío). El programa está en un bucle implícito, que evalúa el elemento de la pila superior (mientras lo deja en la pila) cada iteración. Entonces se ejecutará la versión activa. (Casi todos los 7 programas comienzan así).
Primera iteración
Antes del comando de salida, la pila contiene dos copias de
240223
(es decir, pasivo). El primero obtiene salida (sin ningún efecto observable que no sea seleccionar el formato de salida 2, "números"), el siguiente permanece y se convierte en el programa para la próxima iteración.Segunda iteración
Lo mismo que la iteración cero, ¿verdad? No exactamente; la pila tenía diferentes contenidos. La pila está ahora
240223
debajo .240223240223
Tercera iteración
Esto genera un elemento de pila que tiene tres 6s-y-0 más que 7s-y-1s. El formato de salida 2 interpreta esto como una solicitud para ingresar un número. Leemos EOF, con la consecuencia de que el siguiente elemento en la pila se reduce a una cadena de longitud cero. Sin embargo, debido a un error (que parece ligeramente útil y puede ser promovido a una función), esto solo ocurre después de que comienza a ejecutarse. La pila una vez más tiene dos elementos, a
240223
continuación , pero la versión escapada de este elemento superior , ahora se está ejecutando.240223240223240223
72402236240223240223
Cuarta iteración
La parte superior de la pila era una cadena de longitud cero, por lo que básicamente estamos eliminando el programa que terminó allí.
Quinta iteración
Esto es muy similar a la tercera iteración. Sin embargo, hay dos cambios. Primero, ahora hay 4 0 y 6 más que los 1 y 7, por lo que intentaremos ingresar un carácter desde la entrada estándar en lugar de un número. Sin embargo, todavía obtenemos EOF y, como resultado, seguimos reduciendo la parte superior de la pila a una cadena de longitud cero. A continuación, se ejecuta código después de la reducción, por lo que la siguiente iteración no comienza de inmediato. Más bien, hacemos un montón de operaciones en ese elemento de longitud cero, terminando con tres elementos de longitud cero. Producimos uno, los otros dos desaparecen (porque es el final de una iteración), y terminamos básicamente donde estábamos al final de la tercera iteración.
Sexta iteración
El programa que copiamos desde la parte superior de la pila es ahora . Todo funciona como en la iteración anterior hasta llegar a la primera instrucción de salida (la primera ). Esto ahora tiene cinco 0 y 6 más que los 1 y 7, por lo que establece un modo en el que la siguiente instrucción de salida se interpretará como una solicitud para cambiar el formato de salida. Esto también conduce a un cambio notable en el comportamiento; como no hubo solicitud de entrada, no leímos EOF y, por lo tanto, no desencadenamos la consecuencia de leer EOF (el nuevo elemento de pila superior está en blanco) y, como tal, la versión escapada del elemento de pila original permanece en lugar de ser remoto. Esto significa que el próximo
240223240223240223240223
23
2402
ya no es un no-op, creando dos copias con escape del elemento de pila con escape (es decir, ahora tienen doble escape). Generamos uno, configurando el formato de salida a 7 ("igual que la entrada"); este formato de salida no tiene comandos de E / S ni comandos para cambiar el formato, por lo que permaneceremos en él durante el resto del programa. También enviamos724022362402232402232402232402236
(en la misma codificación que la entrada) a la salida estándar.De todos modos, está bastante claro lo que el programa va a hacer a partir de este momento: es una combinación de agregar varios números de copias que se escapan de varias maneras
240223
a la parte superior de la pila, escapar de la parte superior de la pila y generar copias de la parte superior de la pila. A partir de este punto, el elemento de la pila superior nunca se borra (porque nunca leemos EOF), por lo que solo crece y crece y crece. El escape periódico garantiza que la salida nunca se repita (porque significa que en cada iteración, la primera salida comienza con al menos una más7
que en la iteración anterior).fuente
Ohm , 4 bytes (CP437)
Imprime la variable del contador, la incrementa y entra en un bucle infinito. Suficientemente simple.
EDITAR (1 de marzo de 2017): mientras estaba en el proceso de hacer otras actualizaciones (después de publicar esta respuesta), cambié el comportamiento de
∞
. La respuesta actualizada sería∞^,
.fuente
DC "moderno" , 9 bytes
Memoria infinita?
Entonces, ¿una pila en continuo crecimiento está bien?
] :-)
Comentado:
Debido al uso del
r
comando, esto no se ejecutará en algunos DC antiguos.fuente
Ruby,
2112 bytesImprime todos los números naturales. Hasta donde entiendo la descripción del problema, esto debería estar bien.
fuente
PHP, 21 bytes
Uso:
php -r "for(;;)echo uniqid();"
Produce ID únicos basados en la hora actual en microsegundos:
58b3e065e4b4c58b3e065e4b6358b3e065e4b7b58b3e065e4b9458b3e065e4bac58b3e065e4bc458b3e065e4bdc58b3e065e4bf558b3e065e4c0e58b3e065e4c2658b3e065e4c3e58b3e065e4c5658b3e065e4c6f58b3e065e4c8758b3e065e4c9f...
como una secuencia continua de:
58b3e09390617
58b3e09390651
58b3e0939068a
58b3e093906c3
58b3e093906fc
...
fuente
uniqid
tiene una longitud fija. Entonces, si deja que el programa se ejecute durante el tiempo suficiente, esa cadena se desbordará y comenzará desde el principio. Luego, en algún momento, alcanzará el tiempo inicial y el principal podría generar exactamente la misma secuencia de ID nuevamente. Dicho esto, si puedes demostrar que la longitud no es fija, esto debería estar bien.Perl 6 , 11 bytes
Imprime los números naturales.
Pruébalo en línea!
fuente
Python 2, 24 bytes
Imprime 9 veces cada potencia de 2.
Pruébalo en línea
fuente
while n:
.Lote de 7 bytes
O:
fuente
Powershell, 19 bytes
Aburrido contando la respuesta.
Versión mejorada de la respuesta de Count Up Forever
fuente
apilado , 9 bytes
Pruébalo en línea! Similar a mi respuesta Count up forever , esto genera números naturales desde
0
el contador.fuente
Bourne Shell, 11 bytes
fuente
TI-Basic, 11 bytes
fuente
GNU sed , 13 bytes
Este es un contador de precisión arbitrario en unario. Esa es una forma elegante de decir que agrego uno
0
al espacio del patrón e imprimo en cada iteración (bucle infinito).Después de algún tiempo, esto normalmente se encontraría con un error de asignación de memoria y dejaría de imprimir, porque ya no puede almacenar el espacio de patrón cada vez mayor. Eso no es un problema para este desafío, ya que se supone que la memoria es infinita.
Pruébalo en línea! (este intérprete limita aún más los recursos disponibles por diseño)
Vista previa de salida: solo las primeras 5 líneas
fuente
Sesos , 2 bytes
SASM
SBIN
Imprime todos los enteros no negativos en orden.
Pruébalo en línea!
fuente
set mask
directiva, Sesos utiliza enteros de precisión arbitrarios.