Ihre Aufgabe ist es, das Quine mit der längsten Iterationsdauer zu erstellen , wobei die Länge jedes Programms in der Sequenz durch 500 Bytes begrenzt ist.
Das heißt, wenn Sie die folgenden Schritte wiederholen:
- Beginnen Sie mit Ihrem ersten Programm
- Führen Sie das aktuelle Programm aus
- Fahren Sie mit Schritt 2 fort
Sie kehren schließlich zu Ihrem ursprünglichen Programm zurück. Die Anzahl der Programme im Zyklus ist Ihre Punktzahl, die Sie maximieren möchten.
Keines der Programme kann Fehler auslösen. Jedes Programm muss auf die gleiche Weise ausgeführt werden (z. B. keine unterschiedlichen Versionen, Implementierungen, Compileroptionen, Plattformen usw.) (BEARBEITEN: Ja, ein externer Status wie der eines Pseudozufallszahlengenerators wurde in den letzten eingeschlossen Anweisung. Der externe Zustand muss nach jedem Lauf "zurückgesetzt" werden. Wenn Sie echte Zufallszahlen verwenden, wird der ungünstigste Fall angenommen.)
Was diese Herausforderung von der am längsten wiederholten Quine unterscheidet (außer 100 gegenüber 500), ist, dass jedes Programm im Zyklus auch 500 Byte oder weniger umfassen muss. Dies bedeutet, dass der längste mögliche Zyklus (256 ^ 501 - 1) / 255 oder weniger beträgt. Das ist natürlich eine große Zahl, aber nicht so groß, wie viel Code für die Berechnung benötigt wird. Bei der Herausforderung geht es also darum, so viele der (256 ^ 501 - 1) / 255-Möglichkeiten wie möglich zu nutzen, und nicht um eine geschäftige Biber-Herausforderung.
Die Programme dürfen nicht auf ihren eigenen Quellcode zugreifen. Ein leeres Programm ist jedoch zulässig, wenn Sie möchten (solange Sie die anderen Regeln befolgen).
Da es schwierig wäre, die Programme manuell zu überprüfen, können Sie die Punktzahl mit theoretischen Methoden ermitteln. Sie müssen Ihrem Programm eine Erläuterung der Punktzahl und der Richtigkeit beifügen. Wenn Sie die Punktzahl nicht herausfinden können, können Sie stattdessen eine Untergrenze der Anzahl der Programme im Zyklus als Defacto-Punktzahl verwenden. Sie können dies aktualisieren, wenn Sie bessere Untergrenzen finden oder wenn Sie die genaue tatsächliche Punktzahl finden.
Dies ist eine Code-Herausforderung , daher gewinnt die höchste Punktzahl!
BEARBEITEN: Es wird empfohlen, dass Sie schreiben, was Ihre Partitur in wissenschaftlicher Notation ist, damit die Antworten leichter vergleichbar sind. Es ist vollkommen in Ordnung, auch andere Formen der Partitur zu haben, insbesondere wenn diese klarer mit Ihrem Programm verbunden sind. Die Leser werden außerdem aufgefordert, frühere Antworten zu bearbeiten, um dies zu berücksichtigen.