Créez un programme qui sort lui-même.
Cependant, si le code source est répété n fois (ce qui signifie concaténer une copie du code source à la fin n-1 fois) , il devrait y avoir 1 / n de probabilité de sortie du code source d'origine, une probabilité de 1 / n de sortie le code source répété deux fois, une probabilité 1 / n de sortir le code source répété trois fois, ..., et une probabilité 1 / n de sortir le code source n fois.
Par exemple, si votre programme l'est foobar
, alors il devrait toujours sortir exactement foobar
. Toutefois, si vous exécutez foobarfoobarfoobarfoobar
, il devrait y avoir une chance de ¼ chacun de produire foobar
, foobarfoobar
, foobarfoobarfoobar
et foobarfoobarfoobarfoobar
.
- La distribution de chaque sortie possible doit être égale
- En plus des méthodes d'E / S standard applicables et des échappatoires standard interdites, des règles de quine standard s'appliquent (ne peuvent pas accéder à sa propre source, etc.)
- C'est le golf de code, donc la réponse la plus courte en octets gagne
foobarfoobar
), Il n'imprimera quefoobar
foobarfoobar
estfoobar
répété deux fois, pas une fois.Réponses:
Perl 5 ,
8280 octetsEssayez-le en ligne! ou Suite de tests
la source
Gelée ,
2422 octetsEssayez-le en ligne!
Essayez-le x4!
la source
05AB1E , 32 octets
Essayez-le en ligne!
Explication
la source
Gol> <> , 21 octets
Essayez-le en ligne!
Explication:
la source
Alice , 35 octets
Essayez-le en ligne!
Explication
Comme dans beaucoup de quines dans les langages 2D, cela commence par un
"
qui s'enroule autour de lui et pousse la première ligne entière sauf le"
lui - même.L'ajout d'une ou plusieurs copies supplémentaires du code source placera des espaces implicites à la fin du littéral de chaîne. Pour en faire un quine, nous tronquons la pile à 31 caractères.
Appuyez sur une nouvelle ligne, puis sur la hauteur de la pile trois fois. Les valeurs poussées comme hauteur de pile sont 32 (l'espace dans la deuxième ligne), 33 (le
!
dans la deuxième ligne) et 34 (l'initiale"
).Poussez à nouveau la hauteur de la pile, cette fois comme la longueur du code source d'origine (35).
Initialiser un compteur à 1. Ceci comptera le nombre de fois que le code source est répété.
Tournez trois fois à droite sur place (c.-à-d. Tournez à gauche). Chaque répétition supplémentaire du code source apportera un
h
dans la même colonne que celle-ci}
, incrémentant ainsi le compteur. Lorsque l'IP revient au}
, tournez à nouveau à droite pour continuer dans la même direction.Prenez un nombre aléatoire uniforme de 0 à n-1, puis ajoutez 1 pour obtenir le nombre de fois de sortie de la source d'origine.
Multipliez par la hauteur de pile précédemment poussée (longueur de code), puis répétez ce qui suit plusieurs fois en appuyant sur une adresse de retour plusieurs fois moins une.
Sortez le haut de la pile sans la détruire.
Déplacez l'entrée de pile inférieure vers le haut.
Répétez, puis terminez une fois la boucle terminée.
la source
JavaScript (Node.js) , 62 octets
Essayez-le en ligne!
la source
Fusain , 58 octets
Essayez-le en ligne! Pas de version détaillée car le déverbosificateur s'étouffe actuellement
"´"
. Surtout basé sur la quine Charcoal de Golf, vous êtes une quine pour le bien! . Explication:Attribuez la chaîne littérale
θ⎚×⊕‽L⊞Oυω⁺⪫⁺´≔θ´´θ
àθ
.Effacez toute sortie précédente, de sorte que seule la dernière sortie prenne effet.
Poussez la chaîne vide dans le tableau prédéfini. Cela rend la longueur du tableau égale au nombre de répétitions traitées jusqu'à présent, alors prenez sa longueur, prenez un nombre aléatoire dans la plage exclusive implicite, ajoutez 1 et répétez la chaîne suivante autant de fois.
Ajoutez la chaîne littérale
≔
àθ
, puis insérez des littéraux´
entre chaque caractère, puis suffixez une autre copie deθ
.la source