Das Ordnungszahlensystem ist ein System mit unendlichen Zahlen. Viele unendliche Zahlen. So viele unendliche Zahlen, dass es buchstäblich keine Unendlichkeit gibt, um seine eigene Unendlichkeit darzustellen. Das obige Bild gibt eine kleine Vorstellung davon, wie sie funktionieren. Eine Ordnungszahl ( Von-Neumann-Konstruktion ) ist eine Reihe früherer Ordnungszahlen . Beispiel: 0 ist die leere Menge, 1 ist die Menge {0}, 2 ist die Menge {0, 1} usw. Dann erhalten wir ω, das ist {0, 1, 2, 3 ...}. ω + 1 ist {0, 1, 2, 3 ... ω}, ω mal zwei ist {0, 1, 2 ... ω, ω + 1, ω + 2 ...} und du machst einfach weiter so Das.
Ihr Programm gibt eine Reihe von Ordnungszahlen aus, z. B. {0, 1, 4}. Ihre Punktzahl ist dann die niedrigste Ordnungszahl mehr als die gesamte Ordnungszahl in Ihrem Satz. Für {0, 1, 4} wäre die Punktzahl 5. Für {0, 1, 2 ...} wäre die Punktzahl ω.
Wie geben Sie Ihre Ordnungszahlen aus, die Sie fragen? Code natürlich. Ihr Programm gibt eine möglicherweise unendliche Liste anderer Programme in Anführungszeichen in jeder Zeile aus (verwenden Sie die Literalzeichenfolge "\ n", um neue Zeilen darzustellen). Ein Programm entspricht der oben angegebenen Punktzahl. Zum Beispiel, wenn Sie ausgeben
"A"
"B"
"C"
Wenn A, B und C selbst gültige Antworten sind und die Punkte {0, 1, 4} haben, ist der Punktestand Ihres Programms 5. Beachten Sie, dass A, B und C vollständige Programme sein müssen, keine Fragmente.
Basierend auf den obigen Regeln hat ein Programm, das nichts ausgibt, eine Punktzahl von 0 (die kleinste Ordnungszahl größer als alle {} ist 0). Denken Sie auch daran, dass sich eine Menge über das Axiom der Grundlage nicht selbst enthalten kann . Jede Menge (und daher auch jede Ordnungszahl) hat nämlich einen Pfad bis auf Null. Dies bedeutet, dass das a full-quine ungültig ist, da es keine Menge ist.
Auch darf kein Programm auf fremde Ressourcen (eigene Datei, Internet etc ...) zugreifen. Wenn Sie Ihre Partitur auflisten, stellen Sie auch die Kantor-Normalform der Partitur daneben, wenn sie noch nicht in Kantor-Normalform vorliegt.
Unter Berücksichtigung der oben genannten Punkte muss die tatsächliche Antwort, die Sie veröffentlichen, unter 1.000.000 Byte liegen (ohne Kommentare). (Diese Obergrenze wird wahrscheinlich nur für automatisch generierten Code ins Spiel kommen.) Außerdem können Sie Ihre Punktzahl für jedes Byte erhöhen, das Sie nicht verwenden (da es sich um Unendlichkeiten handelt, wird dies wahrscheinlich nur berücksichtigt, wenn die Ordnungszahlen sehr nahe beieinander liegen oder gleich sind). Auch hier gilt dieser Absatz nur für die gepostete Antwort, nicht für die generierten oder die generierten und so weiter.
Dies hat das quine-Tag, da es hilfreich sein kann, zumindest einen Teil des Quellcodes zu generieren, um große Ordinalzahlen zu erstellen. Dies ist jedoch keinesfalls erforderlich (zum Beispiel würde eine Einreichung mit Punktzahl 5 wahrscheinlich keinen eigenen Quellcode benötigen).
Ein ausgearbeitetes und kommentiertes Beispiel finden Sie hier .
quelle
Antworten:
Haskell: ψ (& OHgr; & OHgr; & ohgr; ) + 999.672 Punkte
329 Bytes Code mit Ordnungs ψ (& OHgr; & OHgr; & ohgr; ) + 1 verwendet einen Baum-basierte Darstellung von ordinals durch entdeckt Jervell (2005) . Der Baum mit den Kindern α , β ,…, γ wird bezeichnet
α :@ (β :@ (… :@ (γ :@ Z)…))
. Diese Reihenfolge von links nach rechts stimmt mit Jervell überein, obwohl Madore sie von rechts nach links dreht.Haskell: Γ 0 + 999777 Punkte
224 Byte Code mit der Ordnungszahl Γ 0 + 1. Dies basiert auf einer Verallgemeinerung von Beklemishevs Wurm auf ordnungswertige Elemente, die selbst durch Würmer rekursiv dargestellt werden.
Haskell: ε 0 + 999853 Punkte
148 Byte Code mit der Ordnungszahl ε 0 + 1. Dies basiert auf Beklemishevs Wurm . Die Liste
repräsentiert die Ordnungszahl (ω & ggr; + ⋯ + ω & bgr; + ω & agr; ) - 1. So sind die Ausgänge der zweiten Ebene
[0]
,[1]
,[2]
,[3]
, ... 1 dar, ω, ω ω , ω ω ω , ..., stellt die erste Pegelausgang ε 0 und das Anfangsprogramm repräsentiert & epsi; 0 + 1.Haskell: ε 0 + 999807 Punkte
194 Byte Code mit der Ordnungszahl ε 0 + 1.
Z
stellt 0 dar und wir können durch transfinite Induktion auf α , dann auf β beweisen , dassα :@ β
≥ ω α + β ist . So gibt es Ausgänge der zweiten Ebene wenigstens so groß ist wie jeder Turm & ohgr; & ohgr; ⋰ & ohgr; , was bedeutet , die erste Pegelausgang zumindest ε 0 und das Anfangsprogramm mindestens ε 0 + 1.quelle
Rubin, ψ 0 (ψ X (ψ M + 1 (Ω M + 1 Ω M + 1 )) (0)) + 999663 Punkte
Vorausgesetzt, ich verstehe mein Programm richtig, ist meine Punktzahl ψ 0 (ψ X (ψ M + 1 (Ω M + 1 Ω M + 1 )) (0)) + 999663 Punkte, wobei ψ eine ordinale Kollapsfunktion ist, X das Chi Funktion (Mahlo-Kollapsfunktion), und M ist die erste Mahlo-Ordnungszahl.
Dieses Programm ist eine Erweiterung von der , die ich auf schrieb Golf eine Nummer größer als TREE (3) und völlig übertrumpft alle anderen Lösungen hier für jetzt.
Probieren Sie es online!
Rubin, ψ 0 (ψ I (I I )) + 999674 Punkte
Probieren Sie es online! (Warnung: Es macht nicht viel, da es sich eindeutig
(0..1.0/0).map{...}
nicht beenden lässt. So drucke ich auch unendlich viele Programme.)Rubin, ψ 0 (ψ I (0)) + 999697 Punkte
Probieren Sie es online!
Ein vernünftigeres Testprogramm, das
(0..5).map{...}
stattdessen Folgendes implementiert :Probieren Sie es online!
Leider
(1..1).map{...}
wird dieses Programm auch mit äußerst speicherintensiv sein. Ich meine, die Länge der Ausgabe übersteigt Dinge wie SCG (13).Bei Verwendung des einfacheren Programms können wir einige Werte berücksichtigen:
Probieren Sie es online!
Grundsätzlich wird dasselbe Programm wiederholt im Format:
wo die initialisierten
x
Datensätze die Ordnungszahl, auf die sich das Programm bezieht, und die"..."
die Programme hält, nachdemx
sie reduziert wurden. Wenn jax==0
, wird gedrucktDas ist ein Programm, das nichts mit einer Punktzahl von Null druckt, daher
hat eine Punktzahl von 1 und
hat eine Punktzahl von 2 und
hat eine Punktzahl von 3 usw., und mein ursprüngliches Programm druckt diese Programme im Format
Wo
...
sind die oben aufgeführten Programme?Mein aktuelles Programm druckt diese Programme tatsächlich im Format
Unendlich oft und für Werte wie
ω
, tut es etwas ÄhnlichesUnd damit die Punktzahl des Programms
ist
1+some_ordinal
, und die Punktzahl vonist
1+some_ordinal+1
, und die Punktzahl vonist
1+some_ordinal+2
.Erklärung der Ordnungszahlen:
f[a,n,b]
reduziert eine Ordnungszahla
.Jede natürliche Zahl reduziert sich auf die natürliche Zahl darunter.
[c,0,e]
ist der Nachfolger vonc
und reduziert sich immer aufc
.[c,d,e]
ist eine rückwärtsassoziative Hyperoperation, reduziert sich wie folgt:[0]
ist die erste unendliche Ordnungszahl (äquivalent zu ω) und reduziert sich wie folgt:[c]
ist die c-te Omega-Ordnungszahl und reduziert sich wie folgt:[c,d]
ist ψ d (c) und reduziert sich wie folgt:[c,d,e,0]
ist im Grunde dasselbe wie[c,d,e]
, außer dass es über die Operation[c]
anstelle der Nachfolgeoperation zählt.quelle
I
die Ordinale ist, die sich auf den ersten unzugänglichen Kardinal bezieht, genauso wie sich ω auf aleph null bezieht.Java + Brainf ***, ω + 999180 Punkte
Ein Java-Programm, das unendlich viele Brainf *** -Programme erzeugt, von denen jedes das letzte als Ausgabe erzeugt.
Warum? Weil ich kann.
Verbesserungen am Brainf *** Generationsteil sind auf jeden Fall willkommen.
quelle
*
als Platzhalterzeichen verwendet. Geben Sie also einfachbrainf***
oder einbrainf
. All diese Variationen tauchen in den Suchergebnissen auf. codegolf.stackexchange.com/help/searchingLiterate Haskell (GHC 7.10): ω² + 999686 Punkte.
Dies wird als Beispielantwort dienen. Da es sich um ein Beispiel handelt, ist es nur sinnvoll, gebildete Programmierung zu verwenden . Es wird aber nicht gut punkten. Die Birdies werden meine Punktzahl verringern, aber na ja. Lassen Sie uns zuerst eine Hilfsfunktion s erstellen. Wenn x eine Ordnungszahl ist, ist sx = x + 1, aber wir finden unerwartete Verwendungen von s.
Die Show-Funktion erledigt zum Glück die gesamte Saitensanierung für uns. Es lohnt sich auch 0. Null ist nicht der Nachfolger von irgendetwas, aber s "" wird gleich "main = putStrLn" "" sein, was gleich 0 ist.
Nun werden wir eine Funktion erstellen, die n nimmt und ω * n zurückgibt.
Es funktioniert, indem ω * n durch {ω * (n-1), ω * (n-1) +1, ω * (n-1) +2, ...} gebildet wird. Was ist das q? Das ist der Grund, warum wir einen Quine- Tag haben. q ist die oben genannten Hilfsfunktionen bis jetzt.
Beachten Sie, dass nur bei Bedarf q, keiner seiner Nachfolger (s (o (n)), s (s (o (n))) benötigt wird, da sie die Hilfsfunktionen nicht benötigen (außer indirekt von o n). Jetzt müssen wir nur noch alles von ω * n für endlich n ausgeben.
Da gehen wir. ω ^ 2 Nachdem ich nur 314 Codezeichen verwendet habe, beanspruche ich einen Endbonus von 999686, was mir eine Endpunktzahl von ω ^ 2 + 999686 ergibt, die bereits in der normalen Form des Kantors vorliegt.
Die ersten vier Zeilen der Ausgabe (0, ω, ω * 2, ω * 3):
quelle
GolfScript, ε₀ + 1 + 999537 Punkte
Es kann wahrscheinlich besser sein, aber ich wurde zu faul, um größere Ordnungszahlen zu debuggen und zu beweisen.
Kleinere Ordnungszahlen
quelle
Javascript (Nashorn), ω2 + 999807 Punkte
Nashorn ist die in Java integrierte Javascript-Engine. Das funktioniert vielleicht auch in Rhino, aber ich habe es noch nicht getestet.
quelle