Connexes: Interquine
Le programme A génère le code du programme B lorsqu'il est exécuté, et B génère la source de C et C génère la source de A.
Cette fois, vous ne pouvez pas échanger deux personnages et échanger à nouveau :)
Exigences:
- Une seule langue dans tous les programmes
- Des restrictions standard contre les échappatoires s'appliquent
- Tous les programmes sont différents. Un programme qui sort lui-même n'est pas admissible. Deux qui sortent l'un de l'autre ne sont pas non plus admissibles.
- Tous les programmes sont non vides ou d'une longueur d'au moins 1 octet.
- Il n'y a rien à lire car stdin est connecté à
/dev/null
(vous pouvez abuser de cette règle si vous le pouvez ). La sortie passe à stdout. - N'utilisez pas de fonctions qui génèrent des résultats aléatoires.
Additionnel:
- Donner des explications si possible
Le score est la longueur du plus court (pouvez-vous générer un programme long à partir d'un court?). Veuillez écrire la durée de tous les programmes et mettre en surbrillance le plus petit nombre. Le retour à la ligne ne compte pas. Le score le plus bas l'emporte .
Réponses:
Python 3 , 50 octets
Essayez-le en ligne!
La dernière expression passe de
1*2%7
à2*2%7
à4*2%7
ensuite revenir à1*2%7
.la source
1-2/_
forme un cycle avec 3(1,-1,3)
, ce qui permet d'économiser un octet sans avoir besoin de s'échapper pour%
.n
,s='s=%r;print(s%%(s,-~%i%%3))';print(s%(s,-~1%3))
remplaçant3
parn
RProgN 2 ,
128 octetsExpliqué
En raison de la nature pratique de la sortie par défaut de RProgN, cela laisse le nombre, qui fait une boucle entre 1, 2 et 4, sur la première ligne et la version chaîne de la fonction sur la seconde. Inspiré par la réponse Python de @LeakyNun
Essayez-le en ligne!
la source
CJam , 17 octets
Essayez-le en ligne!
Probablement pas optimal, mais c'est une modification de mon approche du défi précédent .
L'idée de base est la même, mais nous effectuons deux swaps, dont l'un est toujours un no-op. Les indices concernés sont
2
,3
et6
:la source
CJam , 14 octets
Essayez-le en ligne!
Les autres programmes font respectivement 26 et 38 octets.
Explication
Encore une autre approche!
la source
Gelée , 11 octets
Cela a généré le même programme avec 1 remplacé par 2 , qui a remplacé 2 par 4 , ce qui génère le programme d'origine.
Essayez-le en ligne!
la source
Python 3, 127, 127 et 127 octets
impressions
impressions
Ceci est basé sur ma réponse à la question Interquine, qui est basée sur un quine Python normal. Et je sais exactement quoi faire quand on a une question quadri-interquine;)
la source
CJam , 14 octets
Essayez-le en ligne!
Explication
la source
Javascript (ES6),
6355 octetsSolution alternative utilisant
Function.prototype.toString
(tricheur, 30 octets)la source
Lambda Calculus , 38 caractères, 44 octets
Une solution simple basée sur la mère de toutes les quines: le combinateur y :
En utilisant les réductions bêta, nous voyons qu'il s'agit bien d'une tri-interquine:
la source
Java 8, 118 octets
Seule
int i=0;
est la différence entre les fonctions / sorties (c'est soit0
,1
soit2
).Explication:
Essayez-le en ligne.
Explication supplémentaire:
quine -part:
String s
contient le code source non formaté%s
est utilisé pour mettre cette chaîne en elle-même avecs.format(...)
%c
,%2$c
Et34
sont utilisés pour formater les guillemets doubles ("
)%%
est utilisé pour formater le signe modulo (%
)s.format(s,...,34,s)
met tout cela ensembleDifférence des sorties / fonctions:
Même approche que la plupart des autres réponses:
int i
commence soit0
,1
soit2
++i%3
transforme ce à l'autre (0→1
;1→2
;2→0
)la source
> <> , 15 octets
Essayez-le en ligne!
Utilise la même forme générale que les autres quines> <>, mais a un caractère supplémentaire devant qui passe par 1, 2 et 4.
la source