Dieser ist ziemlich einfach.
Schreiben Sie das kürzeste Programm, das Sie können, und generieren Sie dabei die meiste Ausgabe.
Damit es Spaß macht, werden Programme, die eine unendliche Ausgabe erzeugen, disqualifiziert.
Der Gewinner ist das Programm mit dem größten Verhältnis von Ausgabegröße zu Codegröße.
Die Ergebnisse basieren auf dem, was auf meinem Computer funktioniert , einem Mac mit Mac OS X 10.7.5, einem Intel Core i5 und 8 GB Speicher.
\n
Antworten:
Python: Code mit 8 Zeichen, Ausgabe von 387420489 Zeichen - Verhältnis: 48427561.125: 1
Wir können das Verhältnis gegen unendlich tendieren lassen, indem wir mehr
**9
s hinzufügen :Beispielsweise:
das hat ein Verhältnis von ~ 10 10 10 10 10 8,568 (unvorstellbar große Zahl).
quelle
**9
s hinzufügen , wird es dann nicht irgendwannInfinity
?**9
s zu ermitteln, die Sie eingeben können, bevor die Ausgabe erfolgtInfinity
.Das sind also alles gute Programme, die mit sehr wenig Code viel Ausgabe produzieren, aber keines davon ist wirklich kurz ...
Brainfuck, 5 Zeichen, 255 Bytes Ausgabe
Ich denke, dies ist der einzige Anwendungsfall, in dem Brainfuck wirklich herausragend ist. Ich weiß, dass dieser nicht gewinnen wird, aber ich denke nicht, dass wir es möglicherweise besser machen können als das Python-Beispiel. Nicht nur das, sondern...
Brainfuck, 4 Zeichen, unendliche Ausgabe
Ich vermute, dass dies das kürzeste Programm mit unendlicher Ausgabe ist.
Moment mal, mein Kumpel hat sich gerade einen wirklich guten ausgedacht.
Python, 80 Bytes, unbekannte Ausgabemenge
Dieses Programm wird definitiv irgendwann eingestellt, aber erst nach ungefähr 8.000 Jahren. Die genaue Anzahl der ausgegebenen Zeichen hängt von der Rate ab, mit der Ihr Computer Zeichen produzieren kann.
quelle
.
Gibt einen unendlichen Strom von 0 Zeichen aus.Perl - 19 Bytes, Ausgabe 187200000000000000 Bytes (9852631578947368.42: 1)
166 Petabyes mit einer einzigen Druckanweisung, die nicht mehr als 1,7 GB Speicher verbrauchen.
Es gibt ein paar Dinge, die diese Herausforderung interessanter gemacht haben, als ich gedacht hatte. Perl scheint sich zu weigern, einer einzelnen Liste mehr als 1 GB Speicher zuzuweisen. Daher kann die 4-Byte- Skalarreferenz auf die innere Zeichenfolge nur 26e7 ≈ 2 28 Mal wiederholt werden .
$]
ist die Nummer der 'alten Perl-Version', die als Zeichenfolge 8 Byte lang ist und ähnelt5.016002
.Mit mehr Systemspeicher sollte es in der Lage sein, höher zu gehen. Angenommen, die vollen 8 GB
$]x9e8
wären tatsächlich verfügbar, sollten Sie stattdessen die innere Zeichenfolge verwenden können, die 1,62 Exabyte ausgeben würde.quelle
Ruby und Python, 13 Zeichen, 599994 Zeichenausgabe, Verhältnis ~ 46153: 1
Erhöht einfach eine sehr große Zahl zur Potenz einer anderen sehr großen Zahl. Die Ausführung dauert ca. 20 Sekunden. Ich kann die Zahlen nicht erhöhen, da dies dazu führen würde, dass die Zahl unendlich wird.
(Ich habe das früher gemacht , ich arbeite gerade daran, eine Schleife für eine noch längere Ausgabe zu erstellen.)
Edit: Ich habe es geschafft!
Ruby, 28 Zeichen, 6e599999 Zeichenausgabe, ~ 6e599998 Verhältnis (glaube ich)
Ungetestet (aus offensichtlichen Gründen), aber ich bin mir ziemlich sicher, dass die erste Zahl ungefähr 1e599994 ist, multipliziert mit 599994 ungefähr 6e599999. Theoretisch würde es funktionieren, aber ich bin nicht sicher, ob es Ihren Computer zum Absturz bringen würde. Haftungsausschluss: Ich bin nicht verantwortlich, wenn es Ihren Computer in irgendeiner Weise schädigt: P.
Natürlich können Sie weitermachen:
Ruby, 37 Zeichen, 6e359992800041 Zeichenausgabe, Verhältnis ~ 6e359992800040
Und so weiter, aber ich bezweifle, dass jeder Computer damit umgehen kann: P.
quelle
Wenn unendliche Eingabe erlaubt war,
Da ist es nicht,
(25128 Ausgabe: 20 Eingabe = 1256,4: 1)
Ich bin nicht auf einer Linux-Box, aber ich kann mir vorstellen, dass Sie so etwas tun könnten
und erhalten eine riesige Ausgabe. (über die Antwort von GigaWatt)
quelle
timeout 99d
. Ja, 99 Tage Laufzeit. Ich bin mir auch nicht sicher, aber irgendwann werden Sie den Entropiepool mit leeren/dev/random
und er wird blockieren, daher ist dies/dev/urandom
möglicherweise angemessener. (Ich habe es geschafft, 40 MB / s miturandom
und nur 128 KB / s mitrandom
)HQ9 +, 11471
Die tatsächliche Anzahl der Zeichen variiert je nach Interpreter, aber wahrscheinlich wären etwa 10000 richtig?
quelle
C #: 108 Zeichen. Verhältnis: 742123445489230793057592: 1
Es lädt nur die Wikipedia- Liste der Gerichtsschreiber des Obersten Gerichtshofs der Vereinigten Staaten (4344904 Zeichen) 18446744073709551615 mal herunter und druckt sie aus .
quelle
for(ulong i=0;i<ulong.MaxValue;i++){Console.Write(new string('a',int.MaxValue));}
2147483647 Zeichen * 18446744073709551615 mal = 39614081238685424720914939905/81 => Verhältnis: 489062731341795366924875801~ - ~! - Verhältnis: (64 4 4 4 64 ) / 154 ~ = 10 10 10 10 10 1,583328920493678
So funktioniert es: Zuerst wird
'
auf 4 ^ 3 oder 64 gesetzt. Dann wird''
eine Funktion erstellt, die'
auf'
^ 4 * mal gesetzt wird (wobei * die Eingabe ist).'''
wird dann eine Funktion gemacht, die''
mit der Eingabe als'
^ 4 aufruft . Dann''''
wird eine Funktion erstellt, die'''
mit'
^ 4 als Eingabe aufruft .''''
wird dann mit einer Eingabe von 64 aufgerufen. Schließlich''
wird in eine Funktion geändert, die ein Leerzeichen * mal druckt; Dies wird dann mit einer Eingabe von aufgerufen'
.Es stellt sich heraus, am Ende,
'
ist 64 4 4 4 64 und die Länge meines Programms ist 154 ; Wenn Sie das in Wolfram | Alpha eingeben , spuckt es 10 10 10 10 10 1,583328920493678 aus , was es nicht einmal zu berechnen braucht. Ich weiß nicht einmal, wie viele Ziffern es enthält , aber 64 4 4 enthält 463. Ziemlich schön für eine Sprache, die nur unäre explizite Zahlen unterstützt und keine Exponentenfunktion hat; 3Ich hätte das viel größer machen können, aber übertrieben.
quelle
Javascript: 27 Zeichen; 260.431.976 Zeichenausgabe; Verhältnis 9.645.628,74
Dieser Code codiert die Eingabe
61
61 Mal rekursiv in Base64. Wenn Sie eine Längeneingaben
in Base64 codieren, wird eine Längenausgabe erstelltn * 8/6
, die auf ein Vielfaches von 4 aufgerundet wird.Dies muss in einer JavaScript-Konsolenumgebung ausgeführt werden, die die Base64-Codierungsfunktion nativ unterstützt
btoa
. (Jeder moderne Browser, aber nicht Node.js.) Hinweis Chrome kann nicht höher als ausgeführt werdeni=61
, während Firefox nur erreichen kanni=60
. Beachten Sie auch, dass die Chrome-Konsole die Ausgabe nicht anzeigen kann, da sie zu groß ist. Sie können die Ergebnisgröße jedoch überprüfen, indem Sie sie ausführenWenn dieses Programm maximal ausgeführt werden könnte
i=99
, würde es eine hypothetische Ausgabe von 14.566.872.071.840 (14,5 Billionen, 14.5e12) Zeichen für ein hypothetisches Verhältnis von etwa 540 Milliarden (5.39e11) erzeugen.quelle
Ruby, 23 Zeichen - ~ 500000000000000 (5e14) Ausgabe
Ti-Basic 84, 13 Zeichen - ~ 3000 Ausgabe
Benennen Sie das Programm
prgmA
quelle
Rubin,
2839644 ZeichenNicht sehr kurz, aber es kompensiert es in der Ausgabe, was so viel ist, dass ich es noch nicht messen konnte.
quelle
1e127
Nach meinen Berechnungen würde es sich um eine Zeichenausgabe handeln. Wenn Sie einer Variablen zuweisen, wird die Codegröße ohnehin halbiert. Außerdem1e99
ist eine größere Zahl weniger Platz. Verwenden Siemap
statteach
, verwenden Sieputs
stattprint
, entfernen Sie zusätzliche Leerzeichen zwischenprint
und"ier...
. Sie können diese große Zeichenfolge auch durch'a'*999
(oder sogar?a*999
) eine längere Zeichenfolge ersetzen , die weniger Platz benötigt. Zusammenfassung: Dies ist überhaupt nicht Golf(0..1e99).map
einer Variablen zu? wiea=(0...1e99).map;a{a{a{a{a{puts'a'*99}}}}}
a=(0...1e99).map
. Vielleicht möchten Sie das etwas abschwächen.0..1e9
würde etwa 4 GB verwenden.Mathematica 9 Zeichen Verhältnis: ~ 4564112: 1
Das Folgende ist ein Bild der Mathematica-Eingabe. Ich habe nicht herausgefunden, wie ich es in SE rendern soll.
Hier ist ein Screenshot, der die Anzahl der Stellen in der Ausgabe zeigt.
IntegerDigits
konvertiert die Ausgabe in eine Liste von Ziffern.Length
zählt die Anzahl der Ziffern.Keystrokes ein: 9, ctrl6, 9, ctrl6, 9, ctrl6, 9, ctrl6, 9....
quelle
Befunge-93: 48 Zeichen, ungefähr ((2 ^ 32) ^ 2) * 10 Zeichen ausgegeben
Befunges Stapel ist theoretisch unendlich, aber die Zahlen, die der Stapel speichert, sind auf die Größe einer vorzeichenlosen langen Ganzzahl beschränkt (hier wird angenommen, dass sie 32 Bit beträgt). Für einen Befunge-Interpreter ist (x + 1)> x für den richtigen Wert von x falsch. Wir verwenden diese Tatsache, um zuerst alle Werte von Null auf das Maximum zu verschieben (zweimal, mit einer Eins jede dritte Zahl), und dann geben wir sie für jeden Wert auf dem Stapel aus, dekrementieren ihn und platzieren ihn dann, wenn er Null erreicht. Schließlich leert sich der Stapel und das Programm wird beendet. Ich bin vielleicht ein bisschen von der Ausgabegröße abweichend, aber es sollte irgendwo in diesem Stadion sein.
quelle
C: 48 Zeichen, ca. (2 ^ 32 - 1) * 65090 Byte Ausgabe
Beachten Sie, dass der 65090 nicht genau ist und von der Stapelgröße abhängt. Das Programm stoppt schließlich, wenn es abstürzt. Ich könnte auch einfach eine immer längere Zeichenfolge in Puts () einfügen, um die Ration unendlich zu machen, aber das scheint ziemlich betrügerisch.
quelle
Java (131): unbekannte, aber begrenzte Menge
Verwenden der geringen Wahrscheinlichkeit von Math.random (), in einer Schleife auf 0 zu gelangen und dann 2 ^ 64-1-Schleifen durch eine foreach mit der Ausgabe 1234567890 zu gehen;
quelle
Python 3, 115 Byte, läuft 7983 Jahre (unbekannte Anzahl von Zeichen)
EDIT: ymbirtt hat mich geschlagen ._.
Ich weiß, das ist nicht wirklich kurz und ich weiß, dass die andere Python-Antwort viel länger ist, aber ich habe beschlossen, es zu versuchen.
Das Programm läuft ungefähr 8000 Jahre, was, wie Sie wissen, eine ziemlich lange Zeit ist.
Was es tut, ist kontinuierlich die aktuelle Zeit mit der
datetime.datetime.now()
Funktion abzurufen und sie zu vergleichen9999-12-31 24:59:59.999999
, was meines Wissens das maximale Datum in Python ist.Wenn ist ist gleich, stoppt das Programm. Wenn dies nicht der Fall ist, wird kontinuierlich ausgegeben
a
.quelle