Diese Herausforderung ähnelt Can you Meta Quine?
Ein Quine ist ein Programm, das sich auf STDOUT selbst produziert. Diese Herausforderung besteht darin, ein Programm A zu erzeugen, das beim Ausführen ein Programm B auf STDOUT erzeugt. Programm B erzeugt beim Ausführen Programm A auf STDOUT. Programme A und B müssen in derselben Sprache geschrieben sein (und in derselben Sprache ausgeführt werden). Die verknüpfte Frage beschränkte A! = B. Das sah zu einfach aus. Für diese Frage bestehen wir also darauf, dass A und B Antiquitäten sind, wobei die folgenden Regeln angewendet werden:
- Die Programme A und B dürfen nicht dieselben Zeichen verwenden, außer für Leerzeichen und Anweisungstrennzeichen sowie Interpunktionszeichen.
- Programme A und B müssen jeweils mindestens ein Zeichen enthalten, das weder ein Leerzeichen noch ein Anweisungstrennzeichen oder ein Interpunktionszeichen ist.
- Für die Zwecke der Regeln 1 und 2 schließt der Begriff "Leerzeichen" jedes Symbol oder jede Folge von Symbolen aus, bei denen es sich um eine Anweisung, einen Operator oder ein Symbol handelt, die (im Gegensatz zu einem Trennzeichen) interpretiert werden. Daher gibt es in der Whitespace-Sprache kein Whitespace.
- Ein Anweisungstrennzeichen ist ein syntaktisches Element, das üblicherweise in der Sprache zum Trennen von Anweisungen verwendet wird. Dies würde den Zeilenumbruch in Python oder das Semikolon in Java, Perl oder C einschließen.
- Ein Satzzeichen ist ein ASCII - Zeichen , die weder Leerzeichen ist noch in der Zeichenklasse POSIX Wortes (dh ein Unterstrich ist nicht Interpunktion für diesen Zweck) - also
ispunct()
zurückkehren würde wahr, und es ist nicht_
. - Programm A muss beim Ausführen ein Programm (Programm B) auf seinem STDOUT erzeugen, das beim Ausführen wiederum Programm A erzeugt.
- Programme A und B müssen in derselben Programmiersprache sein.
- Die verwendete Programmiersprache muss tatsächlich eine Programmiersprache sein. Sofern Sie nichts anderes vorbringen, schlage ich vor, dass Turing vollständig ist.
- Mindestens eine von A und B muss mindestens eine Anweisung innerhalb der Sprache ausführen.
Dies ist Codegolf, daher gewinnt die kürzeste Antwort, wobei die Punktzahl die Länge von Programm A in Bytes ist (dh die Länge von Programm B ist nicht relevant).
A
und a
andere „Zeichen“ in Betracht gezogen?