Su tarea es escribir un programa o función que genere el primer carácter de su código fuente, luego el segundo, luego el tercero ... cada vez que se ejecute.
Por ejemplo, si su programa estaba foo
en el idioma del bar
archivo baz.bar
, debería obtener una salida similar a esta:
λ bar baz.bar
f
λ bar baz.bar
o
λ bar baz.bar
o
Su programa puede hacer cualquier cosa una vez que haya terminado de imprimir su código fuente de esta manera. Puede modificar el código fuente del archivo, pero recuerde que el código fuente a imprimir es el código fuente original .
Este es un código de golf, por lo que gana el programa más corto en bytes.
Respuestas:
Jalea , 12 bytes
Este es un enlace niládico. Pruébalo en línea! (Incluye código para llamar al enlace doce veces).
Cómo funciona
Como una ventaja adicional, dado que el registro mantendrá una cadena vacía después de la duodécima llamada, una vez más es falsa y el enlace está listo para comenzar de nuevo. Llamar al enlace 24 veces generará el código fuente dos veces, llamándolo 36 veces tres veces, etc.
fuente
¢
), la función de identidad (¹
no es realmente necesaria después de la primera llamada), establezca el valor de retorno en salto de línea (⁷
imprime implícitamente el valor de retorno anterior), repita.¹
y⁷
ambos son superíndices, pero no están relacionados. Los he reemplazado con los menos confusos¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢
(llamar, concatenar, repetir).Javascript - 26 bytes
Define
f()
que devuelve el código fuente carácter por carácter.Devuelve indefinido después de que se quede sin caracteres.
fuente
apilado , no competitivo, 34 bytes
Una variación de la quine estándar. Este es un programa completo. Esto sirve
execCounter
para saber cuántas veces se ejecutó este programa específicamente. Errores después de enviar todo.Pruébalo aquí!
fuente
Pip , 31 bytes
Una función anónima. ¡Pruébalo en TIO!
Explicación
Comience con esta Pip quine estándar:
Envuelva esto en llaves para que sea una función. Ahora, en lugar de devolver toda la fuente, necesitamos indexarla. El uso de una variable global para el índice y su incremento cada vez cumplirá el requisito del "siguiente carácter cada vez que se llame".
v
es el mejor candidato porque está preinicializado-1
. Incrementándolo la primera vez se obtiene un índice de0
, la próxima vez1
, etc.Pip tiene una indexación cíclica, por lo que una vez que la función imprime su último carácter, comenzará de nuevo desde el principio.
fuente
Python, 90 bytes
Una extensión de la línea estándar de Python (se aceptan consejos de golf):
Esta es una función de generador de Python , lo que significa que iteras sobre ella, y cada iteración proporciona el siguiente carácter en el código fuente. Cuando se han devuelto todos los caracteres, esto se bloquea con
IndexError
.Para probar, simplemente agregue este script al final del programa:
O pruébalo en línea!
fuente
*> <> ,
1321 bytesCrea un archivo llamado
\n
para realizar un seguimiento del índice.Es posible que se pueda jugar más al golf, pero nada me sobresalta de inmediato ...
Salida
Explicación
Hacer trampa Quine incremental
Explicación
fuente
g
instrucciones."your code goes here;
de trabajo estándar para> <>, luego acceder al enésimo miembro en la pilaMathematica, 91 bytes
Comentarios muy bienvenidos; Todavía estoy aprendiendo las cuerdas sobre qué quines son quines adecuadas.
Define una función llamada repetidamente sin argumentos. Después de la llamada 91, arroja un gran error y regresa sin evaluar.
Había dos problemas que superar: primero, solo quería usar
StringTake[ToString[#0]<>"[]"]
, peroToString[]
parece borrar las comillas; así que tuve que sustituir"[]"
porFromCharacterCode[{91, 93}]
. En segundo lugar, las variables de Mathematica comienzan sin inicializar, por lo que no puedo llamar++q
antes de queq
esté definido; Por esoIf[!NumberQ[q], q = 0]
se necesita la inicial .Coda irrelevante: mientras miraba hacia arriba
NumberQ
, aprendí que Mathematica tiene una función llamadaTrueQ
... que, ¡sí, devuelveTrue
si el argumento esTrue
yFalse
si el argumento esFalse
! (La utilidad es que también devuelveFalse
todos los demás argumentos).fuente
Microscript II,
4033 bytesUn literal de bloque de código, el equivalente más cercano del lenguaje a una función:
Después de ejecutarse, se vuelve
x
a poner para facilitar la invocación nuevamente.fuente
Bash (y zsh, ksh), 39 bytes
No imprime nada después de que se imprime el programa.
Asegúrese de
0
que no exista en el directorio actual y ejecute:fuente