Quines machen Spaß. Polyglots machen auch Spaß. Es gibt vielsprachige Quines, aber wir können die Messlatte noch höher legen.
Schreiben Sie eine Datei, die ein gültiges Programm für die Sprachen α, β und γ enthält. Wenn die Datei (möglicherweise nach dem Kompilieren) als Programm der Sprache α oder β ausgeführt wird, muss die Ausgabe des Programms dieselbe Form haben wie eine gültige Einreichung für diesen Wettbewerb. Wenn Ihre Datei als Sprachprogramm γ ausgeführt wird, gibt sie eine Zahl aus. Der Wert dieser Zahl ist die Kette früherer Ausführungen des Programms, die als Binärzahl interpretiert wurden.
Diese Erklärung ist möglicherweise etwas schwer zu verstehen, daher hier ein Beispiel. Sei Α, Β und Γ Funktionen, die ihre Eingabe als Sprache α, β bzw. γ ausführen. programmieren und die Ausgabe dieser Programme zurückgeben. Sei x eine gültige Einsendung für diesen Wettbewerb. Dann ergibt der folgende Ausdruck, in dem wir x durch die Sprache β, α, β, α, α, β und γ in dieser Reihenfolge verarbeiten, 41, da 41 10 = 101001 2 .
Γ (Β (Α (Α (Β (Α (Β ( x ))))))
Sie können nicht davon ausgehen, dass die vorletzte Ausführung in der Kette eine Ausführung in der Sprache β ist. Für den Fall, dass Ihre ursprüngliche Einreichung direkt als Sprachprogramm γ ausgeführt wird, wird 0 ausgegeben.
Ihr Programm muss sich für bis zu 16 Zusammenstellungen in der Kette korrekt verhalten. Das heißt, die höchste Zahl, die Ihr Programm am Ende ausdrucken könnte, ist 2 15 - 1. Natürlich darf Ihr Programm längere Kompilierungsketten unterstützen.
Dies ist ein Beliebtheitswettbewerb, um kreative Lösungen zu fördern. Die Einreichung mit der höchsten Stimmenzahl gewinnt.
quelle
magic += Number(System.env.lang_version[-1])
a,b,c
oder1,2,3
=)Antworten:
Python 2, Python 3,> <> (Fisch)
Python-Erklärung
Die Python 2- und Python 3-Interpreter funktionieren ähnlich, außer dass die
v=int(1/2*2)
Variable unterschiedliche Werte (0
und1
) erhält, da Python 2 die Float-Division und Python 3 die Integer-Division verwendet.In jedem Lauf fügen sie den Ausdruck
+0*2
oder+1*2
in die erste Zeile (nach#;n
) und in diex
Zeichenfolge (nach dem letzten Schreibbefehl) ein. Der> <> Interpreter verwendet die erste Addition und die Pythons die zweite, um korrekte Quines zu erstellen.Code nach
B(A(B(B(x))))
:> <> (Fisch) Erklärung
Wenn Sie den Interpreter> <> ausführen, springt der
#
Codezeiger von den Umbrüchen um die erste Zeile zurück und beginnt am Ende der ersten Zeile und in Richtung Westen, indem er Zahlen auf den Stapel schiebt. Wenn ein Operator kommt (+
oder*
), werden die beiden obersten Elemente aus dem Stapel entfernt und das Ergebnis zurückgeschoben. Mit dieser Methode erhalten wir die base2-Darstellung der vorherigen Läufe (13
im vorherigen Beispiel). Dies ist die gewünschte Nummer, also geben wir sie mit ausn
und beenden mit;
.quelle