Verwandte: Interquine
Programm A gibt den Code von Programm B aus, wenn es ausgeführt wird, und B gibt die Quelle von C aus und C gibt die Quelle von A aus.
Dieses Mal können Sie nicht zwei Zeichen austauschen und erneut austauschen :)
Bedarf:
- Nur eine Sprache in allen Programmen
- Es gelten Standardlückenbeschränkungen
- Alle Programme sind unterschiedlich. Ein Programm, das sich selbst ausgibt, ist nicht qualifiziert. Zwei, die sich gegenseitig ausgeben, sind ebenfalls nicht qualifiziert.
- Alle Programme sind nicht leer oder mindestens 1 Byte lang.
- Es gibt nichts zu lesen, da stdin mit verbunden ist
/dev/null
(Sie können diese Regel missbrauchen, wenn Sie können ). Die Ausgabe geht an stdout. - Verwenden Sie keine Funktionen, die zufällige Ergebnisse generieren.
Zusätzlich:
- Geben Sie nach Möglichkeit Erklärungen
Die Punktzahl ist die Länge der kürzesten (können Sie aus einer kurzen ein langes Programm erstellen?). Bitte schreiben Sie die Länge aller Programme und markieren Sie die kleinste Zahl. Nachgestellte Zeilenumbrüche zählen nicht. Die niedrigste Punktzahl gewinnt .
Antworten:
Python 3 , 50 Bytes
Probieren Sie es online aus!
Der letzte Ausdruck geht von
1*2%7
bis2*2%7
nach4*2%7
dann zurück zu1*2%7
.quelle
1-2/_
einen 3-Zyklus mit(1,-1,3)
, der ein Byte spart, indem kein Escape erforderlich ist%
.n
,s='s=%r;print(s%%(s,-~%i%%3))';print(s%(s,-~1%3))
ersetzt3
durchn
RProgN 2 ,
128 BytesErklärt
Aufgrund der praktischen Art und Weise, wie RProgN standardmäßig ausgegeben wird, verbleibt in der ersten Zeile die Zahl zwischen 1, 2 und 4 und in der zweiten Zeile die stringifizierte Version der Funktion. Inspiriert von @LeakyNun ‚s Python Antwort
Probieren Sie es online aus!
quelle
CJam , 17 Bytes
Probieren Sie es online aus!
Wahrscheinlich nicht optimal, aber dies ist eine Modifikation meiner Herangehensweise an die vorherige Herausforderung .
Die Grundidee ist dieselbe, aber wir führen zwei Swaps durch, von denen einer immer ein No-Op ist. Die betroffenen Indizes sind
2
,3
und6
:quelle
CJam , 14 Bytes
Probieren Sie es online aus!
Die anderen Programme sind 26 bzw. 38 Byte lang.
Erläuterung
Noch ein Ansatz!
quelle
Gelee , 11 Bytes
Dies erzeugte das gleiche Programm, wobei 1 durch 2 ersetzt wurde , wodurch 2 durch 4 ersetzt wurde , wodurch das ursprüngliche Programm erzeugt wurde.
Probieren Sie es online aus!
quelle
Python 3, 127, 127 und 127 Bytes
druckt
druckt
Dies basiert auf meiner Antwort auf die Interquine-Frage, die auf einem normalen Python-Quine basiert. Und ich weiß genau, was zu tun ist, wenn wir eine Quad-Interquine-Frage bekommen;)
quelle
CJam , 14 Bytes
Probieren Sie es online aus!
Erläuterung
quelle
Javascript (ES6),
6355 BytesAlternative Lösung mit
Function.prototype.toString
(betrügerisch, 30 Bytes)quelle
Lambda-Kalkül , 38 Zeichen, 44 Bytes
Eine einfache Lösung basierend auf der Mutter aller Quines: der y-Kombinator :
Anhand von Beta-Reduktionen sehen wir, dass dies tatsächlich ein Tri-Interquine ist:
quelle
Java 8, 118 Bytes
Nur
int i=0;
ist der Unterschied zwischen den Funktionen / Ausgänge (es ist entweder0
,1
oder2
).Erläuterung:
Probieren Sie es online aus.
Zusätzliche Erklärung:
Quine-Teil :
String s
enthält den unformatierten Quellcode%s
wird verwendet, um diesen String mit sich selbst in sich zu setzens.format(...)
%c
,%2$c
Und34
werden verwendet , um die doppelten Anführungszeichen zu formatieren ("
)%%
wird verwendet, um das Modulo-Zeichen (%
) zu formatierens.format(s,...,34,s)
fasst alles zusammenUnterschied der Ausgänge / Funktionen:
Gleicher Ansatz wie die meisten anderen Antworten:
int i
beginnt entweder0
bei1
oder2
++i%3
wandelt diese in die nächste (0→1
;1→2
;2→0
)quelle
> <> , 15 Bytes
Probieren Sie es online aus!
Verwendet dieselbe allgemeine Form wie andere> <> Quines, hat jedoch einen zusätzlichen Charakter vor sich, der durch 1, 2 und 4 geführt wird.
quelle