7 , 2 bytes
Los personajes que componen este programa son:
240223
Al ver el archivo en un editor, es probable que intente interpretarlo como ASCII, en cuyo caso se ve así:
P$
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
240223
240223 Agrega 240223 al elemento de la pila superior
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
240223
2 Copie el elemento de la pila superior
40 Escape del segundo elemento de la pila, intercambiándolo a la parte superior
2 Copie el elemento de la pila superior 23 Imprima el elemento
de la pila superior
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
240223
240223 Agrega 240223 al elemento de la pila superior
Lo mismo que la iteración cero, ¿verdad? No exactamente; la pila tenía diferentes contenidos. La pila está ahora 240223debajo .240223240223
Tercera iteración
240 223 240 223
240 223 Anexar 240223 al elemento de pila superior
2 Copia la pila superior elemento
40 Escape del segundo elemento de la pila, el intercambio a la parte superior
2 Copiar el elemento de la pila superior
23 de salida del elemento de pila superior
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 240223continuación , pero la versión escapada de este elemento superior , ahora se está ejecutando.24022324022324022372402236240223240223
Cuarta iteración
7 240223 6 240223240223
7 240223 6 240223240223 Agregar 240223 240223240223 a la parte superior de la pila
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
240223 240223240223
240223 Anexar 240223 al elemento de pila superior
2 Copiar el elemento de pila superior
40 Escapar del segundo elemento de pila, intercambiarlo a la parte superior
2 Copiar el elemento de pila superior
23 Producir el elemento de pila superior
2 Copiar el elemento de pila superior
40 Escapar el segundo elemento de pila, intercambiándolo a la parte superior
2 Copie el elemento de pila superior
23 Imprima el elemento de pila superior
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óximo240223240223240223240223232402ya 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 enviamos 724022362402232402232402232402236(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 240223a 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ás 7que en la iteración anterior).
1\n12\n123no es válido?