Votre tâche consiste à écrire un programme ou une fonction qui génère le premier caractère de son code source, puis le second, puis le troisième ... à chaque exécution.
Par exemple, si votre programme était foo
dans la langue bar
du fichier baz.bar
, vous devriez obtenir une sortie similaire à ceci:
λ bar baz.bar
f
λ bar baz.bar
o
λ bar baz.bar
o
Votre programme peut faire n'importe quoi une fois qu'il a fini d'imprimer son code source de cette façon. Vous pouvez modifier le code source du fichier, mais n'oubliez pas que le code source à imprimer est le code source d' origine .
Il s'agit d'un code-golf, donc le programme le plus court en octets l'emporte.
Réponses:
Gelée , 12 octets
Ceci est un lien niladique. Essayez-le en ligne! (Comprend le code pour appeler le lien douze fois.)
Comment ça marche
Comme bonus supplémentaire, puisque le registre contiendra une chaîne vide après le douzième appel, il est à nouveau faux et le lien est prêt à recommencer. Appeler le lien 24 fois affichera le code source deux fois, en l'appelant 36 fois trois fois, etc.
la source
¢
), fonction d'identité (¹
, pas vraiment nécessaire après le premier appel), définissez la valeur de retour sur saut de ligne (⁷
, imprime implicitement la valeur de retour précédente), répétez.¹
et⁷
sont tous deux des exposants, mais ils ne sont pas liés. Je les ai remplacés par les moins déroutants¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢
(appeler, concaténer, répéter).Javascript - 26 octets
Définit
f()
qui renvoie le code source caractère par caractère.Renvoie undefined après qu'il manque de caractères.
la source
empilées , non concurrentes, 34 octets
Une variation sur le quine standard. Ceci est un programme complet. Cela permet
execCounter
d'obtenir combien de fois ce programme a été spécifiquement exécuté. Erreurs après avoir tout sorti.Essayez-le ici!
la source
Pip , 31 octets
Une fonction anonyme. Testez-le sur TIO!
Explication
Commencez avec cette quine standard Pip:
Enveloppez-le entre accolades pour en faire une fonction. Maintenant, au lieu de renvoyer la source entière, nous devons l'indexer. Utiliser une variable globale pour l'index et l'incrémenter à chaque fois remplira l'exigence "caractère suivant à chaque fois qu'il est appelé".
v
est le meilleur candidat car il est préinitialisé à-1
. L'incrémenter la première fois donne un indice de0
, la prochaine fois1
, etc.Pip a une indexation cyclique, donc une fois que la fonction imprime son dernier caractère, elle recommencera au début.
la source
Python, 90 octets
Une extension sur le quine Python standard (conseils de golf bienvenus):
Il s'agit d'une fonction de générateur python , ce qui signifie que vous itérez dessus, et chaque itération fournit le caractère suivant dans le code source. Lorsque tous les personnages ont été retournés, cela se bloque avec
IndexError
.Pour les tests, ajoutez simplement ce script à la fin du programme:
Ou essayez-le en ligne!
la source
*> <> ,
1321 octetsCrée un fichier nommé
\n
pour garder une trace de l'index.Cela peut être plus jouable au golf, mais rien ne me saute immédiatement aux yeux ...
Sortie
Explication
Tricher Incrineal Quine
Explication
la source
g
instruction."your code goes here;
pour> <>, puis accéder au nième membre de la pileMathematica, 91 octets
Commentaires très bienvenus; J'apprends encore les ficelles de ce que sont les quines appropriées.
Définit une fonction appelée à plusieurs reprises sans arguments. Après le 91e appel, il lance une grosse erreur et revient sans évaluation.
Il y avait deux problèmes à surmonter: d'abord, je voulais juste utiliser
StringTake[ToString[#0]<>"[]"]
, maisToString[]
semble effacer les guillemets; j'ai donc dû remplacer"[]"
parFromCharacterCode[{91, 93}]
. Deuxièmement, les variables Mathematica commencent non initialisées, donc je ne peux pas appeler++q
avantq
est défini; c'est pourquoi l'initialeIf[!NumberQ[q], q = 0]
est nécessaire.Coda non pertinente: en levant les yeux
NumberQ
, j'ai appris que Mathematica a une fonction appeléeTrueQ
... qui, oui, retourneTrue
si l'argument estTrue
etFalse
si l'argument l'estFalse
! (L'utilité est qu'il renvoie égalementFalse
tous les autres arguments.)la source
Microscript II,
4033 octetsUn littéral de bloc de code, l'équivalent le plus proche du langage d'une fonction:
Après l'exécution, il se remet en place
x
pour faciliter l'invocation à nouveau.la source
Bash (et zsh, ksh), 39 octets
Il n'imprime rien après l'impression du programme.
Assurez
0
- vous qu'il n'existe pas dans le répertoire en cours et exécutez:la source