Inspiriert von Hyperprogramming: N + N, N × N, N ^ N in einem .
Vielen Dank an @MartinEnder und @trichoplax für ihre Hilfe im Sandkasten.
Definitionen
Hyperquines
Definieren Sie eine Hyperquine der Ordnung n als ein quineähnliches vollständiges Programm oder eine Funktion P , die alle Regeln erfüllt, die für richtige Quines gelten, und außerdem die folgende Struktur aufweist.
P ist die Verkettung von Zeichen ‡ Gruppen , die bestehen aus n Kopien des gleichen Charakters. Wenn P ausgeführt wird, ist die Ausgabe die Verkettung derselben Gruppen, ergänzt um eine weitere Kopie des Zeichens.
Beispiele
In einer hypothetischen Programmiersprache, in der der Quellcode
aabbcc
die Ausgabe generiertaaabbbccc
, bildet dieses Programm eine Hyperquin der Ordnung 2 .Die Definition erfordert nicht, dass die Zeichen verschiedener Gruppen unterschiedlich sind.
Wenn der Quellcode
aabbcc
die Ausgabe generiertaaaabbbbcccc
, ist das Programm ein Hyperquin der Ordnung 1 ; Der Quellcode besteht aus sechs Einzelzeichengruppen, die Ausgabe aus sechs Zeichenpaaren.In GS2 wird das leere Programm gedruckt
\n
und das Programm wird\n
gedruckt\n\n
. Weder Hyperquine\n
noch\n\n
Hyperquine, da sie nicht alle Eigenschaften von erfüllen richtigen . Kein Teil des Quellcodes kodiert einen anderen Teil der Ausgabe.
Hyperquine Ketten
Definieren Sie eine Hyperquinkette der Länge n als endliche Folge von n vollen Programmen oder n Funktionen
(P 1 ,…, P n ) , die die folgenden Bedingungen erfüllen.
Die Ausgänge von P 1 , ..., P n-1 sind P 2 , ..., P n .
P 1 ,…, P n sind Hyperquinen.
Die Ordnungen von P 1 ,…, P n bilden eine streng ansteigende Folge von benachbarter ganzer Zahlen.
Definieren Sie schließlich eine unendliche Hyperquinkette als eine unendliche Folge von vollständigen Programmen oder Funktionen (P 1 , P 2 ,…), so dass jedes Anfangsintervall (P 1 ,…, P n) ) eine Hyperquinkette der Länge n darstellt .
Beispiele
In einer hypothetischen Programmiersprache, in der der Quellcode
aabbcc
die Ausgabe generiertaaabbbccc
, die wiederum die Ausgabe generiertaaaabbbbcccc
, wird das Paar (aabbcc
,aaabbbccc
) eine Hyperquinkette der Länge 2 .Beachten Sie, dass
aaaabbbbcccc
- die Ausgabe des letzten Hyperquins in der Kette - keine bestimmte Ausgabe erzeugen muss. Es muss nicht einmal gültiger Quellcode sein.Die Fortsetzung des vorherigen Beispiel, wenn
aaaabbbbcccc
das Ausgangssignal erzeugtaaaaabbbbbccccc
, das Triplett (aabbcc
,aaabbbccc
,aaaabbbbcccc
darstellt) , um eine Kette von hyperquine Länge 3 .Wenn dieses Muster für immer fort, die Folge (
aabbcc
,aaabbbccc
,aaaabbbbcccc
, ...) bildet eine unendliche hyperquine Kette.Das Programmpaar (
abc
,aabbcc
) mit Ausgaben (aabbcc
,aaaabbbbcccc
) ist keine Hyperquinkette, da die Ordnungen der Hyperquine beide 1 sind und daher keine streng ansteigende Folge bilden.Das Programmpaar (
aabbcc
,aaaabbbbcccc
) mit den Ausgängen (aaaabbbbcccc
,aaaaabbbbbccccc
) ist keine Hyperquinkette, da die Ordnungen der Hyperquine 1 und 4 sind daher keine Folge benachbarter Ganzzahlen bilden.
Regeln
Aufgabe
Schreiben Sie in einer Programmiersprache Ihrer Wahl eine nicht triviale Hyperquin-Kette, dh eine Kette, die aus mindestens 2 besteht Hyperquinen besteht.
Wie üblich dürfen Ihre Programme in keiner Form Eingaben vornehmen oder auf ihren eigenen Quellcode zugreifen.
Wenn Ihr Interpreter eine implizite Newline druckt, Ihre hyperquines müssen berücksichtigen.
Alle Standardlücken - insbesondere solche, die sich auf Quines beziehen.
Wertung
Die längste Hyperquinkette gewinnt. Wenn zwei oder mehr Einsendungen gleich sind, gewinnt die Einsendung unter diesen, die mit dem kürzesten Hyperquin (gemessen in Zeichen ‡ ) beginnt . Wie üblich ist die Posting-Zeit der letzte Tiebreaker.
‡ Sie müssen dieselbe Zeichenkodierung für Quellcode, Ausgabe, Zeichenzahl und Ausführung verwenden. Zum Beispiel kann das Python - Programm print 42
ist nicht eine 2-Zeichen UTF-32 Einreichung, da der Interpreter jedes Byte als ein einzelnes Zeichen behandelt. Wenn Ihre Sprache nicht zeichenbasiert ist, behandeln Sie alle einzelnen Bytes als Zeichen.