Escriba un programa que tome como entrada una cadena y un entero n
, y produzca:
- La cadena que se pasó al programa.
n
hace tiempo; - Un nuevo programa que se utilizará para la próxima invocación.
No puede almacenar ningún dato fuera del programa, y su programa no puede llamar a programas anteriores en la cadena. Si la cadena no existe, genere una cadena vacía (pero aún genera el siguiente programa).
Ejemplo de ejecución, donde uso la notación program_n
para cada programa sucesivo (Por supuesto, [This text is the nth program]
sería reemplazado por el código real).
$ program_1 "One" 1
[This text is the second program]
$ program_2 "Two" 1
One
[This text is the third program]
$ program_3 "Three" 2
One
[This text is the fourth program]
$ program_4 "Four" 2
Two
[This text is the fifth program]
$ program_5 "Five" 1
Four
[This text is the sixth program]
program_n+1
's a la línea de salida como[program_3, One]
si eso es lo que le gustaría ver. Si ambas salidas van a stdout, ¿cómo deberían separarse? ¿También se permiten funciones en lugar de programas completos?Respuestas:
CJam, 25
Pruébalo en línea
Explicación:
El bloque:
Al final, la cadena solicitada (si la hay), la representación de la matriz, el bloque y la cadena "_ ~" se imprimen automáticamente.
fuente
Python, 221 bytes
Para probar esto fácilmente, use
./thisgolf.py "yourfirststring" | python -c "import sys;exec(sys.stdin.read().split('\n')[1])" "your second string" <N>
, repitiendo el último bit tantas veces como desee.fuente
Python 2, 207 bytes
Basado en mi otra quine pero programa de cambios , esta tarea es más simple, así que pude jugar más al golf. Si pude tomar la entrada a stdin, esto debería ser mucho más corto.
fuente
Javascript ES6,
130128121120113 bytesfuente
\n
con una nueva línea real.