PPCG no ha tenido suficientes quines ya ...
Desafío:
Su tarea es crear un programa "A0". Cuando este programa se ejecuta sin entrada, no genera nada. Cuando este programa se ejecuta con entrada, genera "A1". Cuando "A1" se ejecuta sin entrada, emite "A0". Cuando "A1" se ejecuta con entrada, emite "A2". Más o menos, "A (k)" generará "A (k-1)" cuando se ejecute sin entrada, y generará "A (k + 1)" cuando se ejecute con entrada.
Detalles
Creo que este desafío es bastante simple; No hay otras reglas realmente. Cada programa debe contener al menos 1 byte, por cierto. Puede suponer que la entrada consistirá solo en caracteres ASCII, y puede ignorar los espacios en blanco si lo desea, pero no puede especificar una entrada específica. La salida puede ser STDOUT o STDERR, pero todos sus programas deben salir al mismo. El otro también puede contener texto (por lo que puede enviarlo a STDOUT y luego salir con un error). Gracias a @Dennis por señalar eso.
Todos los programas deben estar en el mismo idioma, y cada programa debe ser único del resto de ellos.
La puntuación es igual a la duración del programa "A0". Como se trata de un desafío de código de golf, ¡gana el puntaje más bajo!

Respuestas:
Pip , 28 bytes
Pruébalo en línea!
Explicación
Esta es una versión modificada de la quip Pip más corta conocida
V Y"`V Y`.RPy". Ese quine funciona definiendo una cadena, jalándola en layvariable y luego evaluándola. Cuando se evalúa, la cadena toma la repr dey(envolviendo así el valor deyentre comillas dobles) y concatena el patrón literal`V Y`al frente.Nuestra estrategia es poner un
0en el programa, luego reemplazar0con10si hubo entrada, o reemplazar10con0si no hubo entrada. (Por lo tanto, A ( k ) contendrá un número que consiste en k 1 seguido de un 0)0y10es conveniente porque hay variables incorporadas (iyt, respectivamente) con esos valores, por lo que podemos referirnos a ellos sin usar dígitos reales .Entonces, en lugar de
RPy, queremos saberRP yRitsi hubo entrada yRP yRtisi no. Podemos combinar los dos casos intercambiando los valores detyisi hay input (I#q Sti), luego haciendoRP yRti. (Tenemos que probar#qla longitud de la entrada, porque las entradas como0son falsey).Ahora solo tenemos que obtener un literal
0en el código y manejar el caso especial de que A0 no produzca salida. Ambos se pueden resolver probando0+iy devolviendousi es falsey:110+i. Ej .).iytse intercambian yies 10.0+itodavía es cierto.isigue siendo 0 y0+ies falsey. En lugar del núcleo de quine, generamosuuna variable incorporada para nil. La impresión nula no produce resultados.fuente
Python 2, 93 bytes
Hay un salto de línea final.
Pruébalo con entrada | Pruébalo sin entrada
Esto se modifica a partir de mi respuesta en una pregunta similar.
Si hay entrada, entonces se incrementará
p. Así que el programa resultante seráp=2+...,p=3+..., etc.fuente
input()y requerir que la entrada esté entre comillas, en lugar de usarlaraw_input(). Si desea ingresar cero, use"0".