Écrivez un programme complet qui prend une entrée entière booléenne ou non négative. Il doit:
- Produire son propre code source si la valeur d'entrée est fausse
- Sortir son propre code source à l'envers si la valeur d'entrée est véridique
Votre programme ne peut pas être palindromique, ni lire son propre code source par aucun moyen.
C'est le code golf - le code le plus court en octets gagne.
Réponses:
Gol> <> , 9 octets
Je me sens un peu gêné de poster ceci, car nous avons déjà des réponses> <>, Vitsy et Minkolang. Les seuls ajouts au quine standard sont
I
(lire l'entrée entière),?
(exécuter ensuite si vrai) etr
(pile inverse).Essayez-le en ligne .
la source
sP#Hr?I"
CJam,
1716 octetsTestez-le ici.
Une modification assez simple du quine standard. Autres solutions pour 17 octets:
Si je peux supposer que l'entrée n'est que 0 ou 1 (en tant que remplaçant pour un booléen, pour lequel il n'y a pas de type dédié dans CJam), j'obtiens 15 en omettant
g
:Explication
la source
g
.Pyth, 17 octets
Une modification simple du quine Pyth standard.
la source
> <>, 17 octets
Nécessite l'indicateur -v (+1 octet) pour pousser l'entrée sur la pile (ou pour que vous puissiez mettre l'entrée sur la pile au préalable sur l'interpréteur en ligne).
Vous pouvez faire ce qui suit pour la même quantité d'octets (sans l'indicateur) si seules les entrées entières étaient autorisées (c'est-à-dire 0 pour la fausse, 1 pour la vérité).
Essayez-le en ligne
Vrai / faux pour> <> ne sont rien respectivement 0 et 0.
la source
Vitsy , 15 octets
... Je suis ... je bat CJam! (crie) Maman! Regardez, ma, je l'ai fait!
Explication:
Version plus récente de Vitsy , 11 octets
la source
Javascript (ES6), 42 octets
Ceci est une modification de ma Bling Quine . C'est aussi deux fois plus long.
la source
prompt()
est nécessaire, sauf si nous passons à Node.JS. Je crois que cela$=_=>(A=`$=${$};$(prompt())`,alert(_?A:[...A].reverse().join``));$(prompt())
fonctionne correctement, bien qu'il soit peut-être possible de jouer plus bas.Burlesque, 40 octets
Explication:
Burlesque a des fonctionnalités avancées de manipulation de pile et de code. En fait, vous ne pouvez pas accéder au code source du programme mais vous pouvez accéder au code restant qui sera exécuté à l'avenir. Cela signifie
#Q
retournera tout le code qui le suit, c'est pourquoi nous devons tout ajouter#Q
à ce code, ce que nous faisonsri#Q
.++1 2
est un code techniquement illégal car il est basé sur la pile. Mais nous pouvons manipuler le code pour le faire exécuter comme1 2++
:Travailler avec ces intégrés est incroyablement délicat et personne ne les a encore utilisés pour quelque chose de productif, sauf pour les choses liées à la quine. Si vous inversez,
++1 2
vous obtenez2 1++
ce qui produira21
et non12
. La raison pour laquelle le code ci-dessus produit12
est parce qu'il#Q
inclut également le<-
donc à la fin, nous finissons par exécuter beaucoup plus que juste2 1++
: p. On finit par exécuter2 1++#q<-
ce qui produit12
.Nous pouvons réellement remplacer des choses dans notre code par exemple, ce code remplace toutes les occurrences de
?+
lui-même par?*
Usage:
la source
Haskell,
126118108 octetsAttend
0
ou1
en entrée.la source
Minkolang 0,10 , 13 octets
Essayez-le ici.
C'est exactement comme le Quine standard , sauf pour ces quatre caractères:
n,?r
.n
prend un entier de l'entrée, l',
inverse, donc?
sauter
si l'entrée est véridique. Sinon,r
inverse la pile afin qu'elle soit sortie dans l'ordre inverse.la source
Python 2, 51 octets
la source
Java 10 (programme complet), 282 octets
Essayez-le en ligne.
Java 10 (en tant que fonction lambda), 154 octets
Essayez-le en ligne.
Explication:
explication quine :
var s
contient le code source non formaté%s
est utilisé pour mettre cette chaîne en elle-même avecs.format(...)
%c
,,%1$c
et34
sont utilisés pour formater les guillemets doubless.format(s,34,s)
met tout cela ensembleEt
new StringBuffer(s).reverse()
est ensuite utilisé pour inverser la chaîne de quine si nécessaire en fonction de l'entrée-booléen.la source
05AB1E , 21 octets
Essayez-le en ligne.
Modification du quine
0"D34çý"D34çý
par défaut en ajoutant‚sè
.Explication:
PS: imprime automatiquement une nouvelle ligne de fin. Si cela doit également être inversé, il s'agit plutôt de 23 octets:
Essayez-le en ligne. (
?
est une impression explicite sans nouvelle ligne )la source