Größte Zahl in zehn Byte Code


77

Ihr Ziel ist es, mit nur zehn Zeichen Code die größtmögliche Anzahl (auf die Standardausgabe) zu drucken.

  • Sie können alle Funktionen Ihrer Sprache außer den integrierten Exponentiationsfunktionen verwenden.
    • Ebenso können Sie keine wissenschaftliche Notation verwenden, um eine Zahl einzugeben. (Also nein 9e+99.)
  • Das Programm muss die Nummer ohne Benutzereingabe ausdrucken. Ebenso kein Lesen aus anderen Dateien oder aus dem Web und so weiter.
  • Ihr Programm muss eine einzelne Zahl berechnen und ausdrucken. Sie können weder eine Zeichenfolge drucken, noch können Sie die gleiche Ziffer tausende Male drucken.
  • Sie können jeden Code, der zum Drucken eines Objekts erforderlich ist, von der Beschränkung auf 10 Zeichen ausschließen. In Python 2, das die print xSyntax verwendet, können Sie beispielsweise bis zu 16 Zeichen für Ihr Programm verwenden.
  • Das Programm muss in der Ausgabe tatsächlich erfolgreich sein. Wenn die Ausführung auf dem schnellsten Computer der Welt länger als eine Stunde dauert, ist sie ungültig.
  • Die Ausgabe kann in jedem Format gesendet werden (so können Sie drucken 999, 5e+100etc.)
  • Unendlichkeit ist ein abstrakter Begriff , keine Zahl. Es ist also keine gültige Ausgabe.


21
Was genau meinst du mit "berechnen"? Auch If it takes longer than an hour to run on any computer in the world, it's invalid.ist nicht objektiv. Ich könnte (theoretisch) einen Computer herstellen, der eine Stunde braucht, um einen T-Zustand zu ändern
user80551

4
Zählt die Bitverschiebung als Potenzierungsoperator, da sie äquivalent zu ist * 2^x?
Claudiu

14
Die Tatsache, dass das Zeitlimit von der Leistung des schnellsten Computers der Welt abhängt, macht es uns unmöglich, den Satz gültiger Antworten zu bestimmen ... Das gefällt mir nicht wirklich
David Z

6
Exponentiation Funktionen sind nicht erlaubt, aber Ackermann Funktion ist erlaubt? Das scheint wirklich willkürlich. Es bleibt unklar, warum eine symbolische Manipulation als "Berechnung" der Zahl angesehen wird.
WolframH

Antworten:


26

Wolfram-Sprache

ack(9!,9!)

ack (9!, 9!) =Bildbeschreibung hier eingeben

Die Ausgabe erfolgt in Pfeilnotation.


3
@KyleKanos Es ist anders, weil der Code / das Programm nicht ins Web ruft. Andere Beispiele typescriptlang.org/Playground tryfsharp.org/Learn/getting-started
Adam Speight

35
Die Wolfram-Sprache ist für die Verwendung eines Raspberry Pi verfügbar und erfordert keinen Webzugriff. Verstößt also nicht gegen diese Regel.
Adam Speight

6
Ich denke, es ist eine sehr gültige Antwort. Dummes Argument, auf der Insel zu sein und keinen Zugang zum Internet zu haben. Die Anforderung "Kein Web" dient nur dazu, das Drucken von Ausgaben einer bereits verfügbaren Ressource zu verhindern. Alle Antworten sind gültig, solange sie einen Code ausführen, um die Ausgabe zu berechnen. Es kommt das neueste Visual Studio, in dem Ihr Code in der Azure-Cloud ausgeführt wird. Möchten Sie also C # einschränken? Oder sind Sie nicht berechtigt, wenn Sie ein Chromebook haben?
Microbian

26
ack(99!,9)ist viel, viel größer.
Jimmy23013

11
Eine der anderen Antworten besagt, dass ack (4,2) die größte Zahl ist, die er in einer Stunde berechnen kann. Ich wäre also überrascht, wenn dies der Fall wäre ...
Jerry Jeremiah

120

Perl,> 1,96835797883262e + 18

time*time

Könnte nicht die größte Antwort sein ... heute! Aber warte genug Jahrtausende und es wird sein!


Bearbeiten:

Um auf einige der Kommentare mit "genug Jahrtausende" einzugehen, meine ich in der Tat n Hunderte von Jahren.

Um fair zu sein, wenn der große Frost / Hitzetod des Universums das Ende des Universums ist (geschätzte Dauer: ~ 10 100 Jahre), würde der "endgültige" Wert ~ 10 214 betragen , was mit Sicherheit viel weniger ist als bei einigen anderen andere Antworten (obwohl "zufällige Quantenfluktuationen oder Quantentunneln einen weiteren Urknall in 10 10 56 Jahren hervorrufen können "). Wenn wir optimistischer vorgehen (z. B. ein zyklisches oder ein Multiversum-Modell), wird die Zeit unendlich lang, und daher würde die Antwort eines Tages in einem Universum auf einer High-Bit-Architektur einige der anderen übertreffen.

Andererseits ist, wie bereits erwähnt, timetatsächlich die Größe von Integer / Long begrenzt, so dass in der Realität so etwas wie ~0immer eine größere Anzahl als time(dh die timevon der Architektur unterstützte maximale Anzahl ) produzieren würde.

Dies war nicht die ernsthafteste Antwort, aber ich hoffe es hat euch gefallen!


23
Upvoted, weil ich die Möglichkeit mag
Tim

5
Werden Sie nicht timeirgendwann eine kleine Zahl zurückgeben? Kommt darauf an, ob es sich um 32-Bit- oder 64-Bit-Perl handelt
Claudiu

3
1000 Jahre ~ 3e10 Sekunden, so dass Sie immer noch um 1e21 als Ausgabe schweben. Vielleicht, wenn Sie 1e50 Jahre gewartet haben, könnten Sie anfangen, gegen die anderen Antworten anzutreten?
Kyle Kanos

8
Sprechen Sie dieses "time times time" aus? :-) (Hallo Timwi!)
Pierre Arlaud

1
Ist die Todeshitze des Universums für die Sommerzeit verantwortlich? Sie könnten sich noch ein paar Sekunden Existenz verdienen.
Alpha

65

Wolfram ≅ 2,003529930 × 10 19728

Ja, es ist eine Sprache! Es steuert das Back-End der beliebten Wolfram Alpha-Site. Es ist die einzige Sprache, die ich gefunden habe, in der die Ackermann-Funktion integriert und auf weniger als 6 Zeichen abgekürzt ist.

In acht Zeichen:

$ ack(4,2)

200352993...719156733

Oder 2,003529930 × 10 19728

ack(4,3), ack(5,2)Usw. sind viel größer, aber zu groß. ack(4,2)ist wahrscheinlich die größte Ackermann-Zahl, die in weniger als einer Stunde vollständig berechnet werden kann.

Größere Zahlen werden symbolisch dargestellt, zB:

$ ack(4,3)

2↑²6 - 3 // using Knuth's up-arrow notation

Die Regeln besagen, dass jedes Ausgabeformat zulässig ist, dies kann also gültig sein. Dies ist größer als 10 10 19727 , was mit Ausnahme der wiederholten Fakultät größer als alle anderen Einträge hier ist.

Jedoch,

$ ack(9,9)

2↑⁷12 - 3

ist größer als die wiederholte Fakultät. Die größte Zahl, die ich in zehn Zeichen bekommen kann, ist:

$ ack(99,99)

2↑⁹⁷102 - 3

Das ist wahnsinnig groß. Das Universum ist nicht groß genug, um einen signifikanten Teil seiner Ziffern darzustellen, selbst wenn Sie die Zahl wiederholt protokolliert haben.


85
Nicht schlecht, aber meiner ack(4,2)+1Lösung nicht gewachsen.
user19057

13
ack (4,2) +2, ICH

1
Ich denke du hast gewonnen.
Anonym Pi

20
@ Kyle, Yimin Es gibt viele irreführende Aussagen in diesem Beitrag und den Kommentaren darunter. Dies ist nicht die Wolfram-Sprache und nicht das Backend von W | A. Es ist einfach eine Eingabe in "natürliche Sprache" für Wolfram | Alpha. In der Wolfram-Sprache ack(4,2)ist die Eingabe ungültig. Die Eingabe in der natürlichen Sprache von W | A sollte nicht einmal als Programmiersprache gelten. Es ist nicht vollständig und Sie können nicht einmal grundlegende Programme wie Euclids Algorithmus darin schreiben. Aus diesem Grund denke ich nicht, dass dies eine gültige Antwort ist, genauso wenig wie eine Google-Anfrage.
Szabolcs

4
Die Wolfram-Sprache ist die in Mathematica verwendete Programmiersprache, die hier dokumentiert ist . Wolfram | Alpha verwendet die natürliche Sprache als Eingabe, nicht die Wolfram-Sprache.
Szabolcs

30

Python2-Shell mit 3.010.301 Ziffern

9<<9999999

Berechnung der Länge: Python fügt diesen langen Zahlen ein "L" hinzu, sodass 1 Zeichen mehr als das Ergebnis Ziffern enthält.

>>> len(repr( 9<<9999999 ))
3010302

Erste und letzte 20 Ziffern:

40724177878623601356... ...96980669011241992192

2
Verdammt! Dies zeigte sich, während ich die gleiche Antwort schrieb
James_pic

2
Das ist wirklich gerecht 9 * 2**9999999, also könnte man argumentieren, dass es Potenzierung verwendet.
Dennis

2
Warten Sie, ***built-in*** exponentiation functionssind nicht so erlaubt dies könnte nach den Regeln rutschen. +1
user80551

1
Mathematische Methode zur Berechnung der Länge:floor(log10(9 * 2**9999999))+1
Justin

8
9 << (9 << 99) ist viel größer, wenn es endet.
Keith Randall

29

CJam, 2 × 10 268,435,457

A28{_*}*K*

Dies berechnet b , wie folgt definiert:

  • a 0 = 10

  • a n = a n - 1 2

  • b = 20 × a 28

$ time cjam <(echo 'A28{_*}*K*') | wc -c
Real    2573.28
User    2638.07
Sys     9.46
268435458

Hintergrund

Dies folgt der gleichen Idee wie Claudius Antwort , aber es basiert nicht darauf. Ich hatte eine ähnliche Idee, die ich nur wenige Minuten nachdem er seine veröffentlicht hatte , veröffentlicht hatte , aber ich habe sie verworfen, da sie nicht annähernd zeitlich begrenzt war.

Der Vorschlag von Aditsu , auf Java 8 zu aktualisieren, und meine Idee , Potenzen von 10 zu verwenden, ermöglichten es CJam, Zahlen zu berechnen, die außerhalb der Reichweite von GolfScript liegen. Dies scheint auf einige Fehler / Einschränkungen von Ruby's Bignum zurückzuführen zu sein.

Wie es funktioniert

A    " Push 10.                                                          ";
28{  " Do the following 28 times:                                        ";
  _* " Duplicate the integer on the stack and multiply it with its copy. ";
}*   "                                                                   ";
K*   " Multiply the result by 20.                                        ";

CJam, 8,1 × 10 1,826,751

KK,{)*_*}/

Dauert auf meinem Computer weniger als fünf Minuten, sodass noch Verbesserungspotenzial besteht.

Dies berechnet eine 20 , die wie folgt definiert ist:

  • a 0 = 20

  • a n = (n × a n - 1 ) 2

Wie es funktioniert

KK,   " Push 20 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ]. ";
{     " For each integer in the array:                                 ";
  )*  " Increment it and compute the its product with the accumulator. ";
  _*  " Multiply the result with itself.                               ";
}/

21
Haha, ist das Kirby? :)
aditsu

Könnten Sie beschreiben, was dies tut?
Kyle Kanos

2
Zu Ihrer Information, ich habe einige Tests durchgeführt, um die Leistung von BigInteger zu überprüfen - ich habe 100000 berechnet! und in eine Zeichenfolge konvertiert. Ergebnisse: Java 6: 21 Sek. Berechnung, 44 Sek. Bis String; Java 7: 14 Sek. Berechnung, 42 Sek. zu String; Java 8: 5 Sek. Berechnung, 1 Sek. bis String!
Aditsu

1
@aditsu: Durch das Upgrade von Java wurde die Laufzeit von 5 Minuten auf 2 Sekunden reduziert!
Dennis

20

Python 3, 9 * 2 ^ (7 * 2 ^ 33)> 10 ^ 18,100,795,813

9 * 2 ^ (2 ^ 35)> 10 ^ 10,343,311,894

Bearbeiten: Meine neue Antwort lautet:

9<<(7<<33)

Alte Antwort für die Nachwelt:

9<<(1<<35)

Genau zehn Zeichen.

Ich drucke die Nummer in hex und

Sie können jeden Code, der zum Drucken eines Objekts erforderlich ist, von der Beschränkung auf 10 Zeichen ausschließen. In Python 2, das die print x -Syntax verwendet, können Sie beispielsweise bis zu 16 Zeichen für Ihr Programm verwenden.

Daher lautet mein aktueller Code:

print(hex(9<<(7<<33)))

Beweisen Sie, dass es in der angegebenen Zeit ausgeführt wird und eine Nummer der angegebenen Größe generiert:

time python bignum.py > bignumoutput.py

real    10m6.606s
user    1m19.183s
sys    0m59.171s
wc -c bignumoutput.py 
15032385541 bignumoutput.py

Meine Nummer> 10 ^ (15032385538 * log (16))> 10 ^ 18100795813

3 Hexadezimalziffern weniger als der obige WC-Ausdruck wegen der Initiale 0x9.

Python 3 ist notwendig, da es in Python 2 7<<33eine lange <<dauern würde und keine langen Eingaben erfordert.

Ich kann stattdessen nicht 9 << (1 << 36) verwenden, weil:

Traceback (most recent call last):
  File "bignum.py", line 1, in <module>
    print(hex(9<<(1<<36)))
MemoryError

Dies ist also die größtmögliche Anzahl des Formulars a<<(b<<cd) auf meinem Computer gedruckt werden können.

Höchstwahrscheinlich verfügt die schnellste Maschine der Welt über mehr Speicher als ich. Meine alternative Antwort lautet daher:

9<<(9<<99)

9 * 2 ^ (9 * 2 ^ 99)> 10 ^ (1.7172038461 * 10 ^ 30)

Meine derzeitige Antwort ist jedoch die größte, die je eingereicht wurde. Sie ist also wahrscheinlich gut genug. Dies alles unter der Annahme, dass eine Bitverschiebung zulässig ist. Es scheint, aus den anderen Antworten zu sein, die es verwenden.


Bisher scheint dies die mit Abstand größte Antwort zu sein. Immerhin ist es eine 10.000.000.000-stellige Zahl.
Nneonneo

1
@ Nneonneo: Ich glaube, meine Lösung ist größer :)
Zaid

Ihre alternative Antwort erfordert juuuuust weniger als 1 MiYiB Speicher und erfordert 100 Bits adressierbarer Speicher (so dass es nicht bis mindestens 128 Bit Python funktionieren). (Quelle: meine ähnliche Antwort )
wizzwizz4

19

Jede Sprache mit ausreichend kurzen konstanten Namen, ca. 18 Stellen.

99/sin(PI)

Ich würde dies als PHP-Antwort posten, aber leider M_PImacht dies nur ein wenig zu lang! PHP liefert dafür aber 8.0839634798317E + 17. Grundsätzlich wird der Mangel an absoluter Präzision in PI: p ausgenutzt


1
Kannst du nicht tan (PI / 2)?
user80551

1
@ user80551 Könnte funktionieren, aber ich habe gerade bemerkt, dass ich dieses letzte verbleibende Zeichen im Limit verwenden kann, um mein Ergebnis um das 99-fache zu steigern.
Niet the Dark Absol

In Common Lisp zu lang: (/ 99(sin pi))(14 Zeichen). Fehler in TI-83: 99/sin(π(8 Zeichen) verursacht Division durch Null. Arbeiten in Libreoffice Calc : =99/SIN(PI((10 Zeichen, nicht mitgerechnet =) berechnet 808423047055000000. Libre auto-Einsätzen die letzten beiden ))in =99/SIN(PI()).
Kernigh

Das hängt von der Genauigkeit der Sprache ab. In PHP sind 14 Dezimalstellen ein üblicher Wert.
Kenorb

@kernigh Ist das in diesem Fall egal, wären es 99/sin(πaber fünf Bytes oder acht? Ich weiß, dass TI-BASIC eine Reihe von Befehlen als einzelne Bytes speichert. ist sin(einer von ihnen?
Wchargin

16

Haskell

Ohne Tricks:

main = print -- Necessary to print anything
    $9999*9999 -- 999890001

Wohl ohne etwas zu berechnen:

main = print
    $floor$1/0 -- 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216

Anpassung von Niets Antwort :

main = print
    $99/sin pi -- 8.083963479831708e17

Der dritte Aufzählungspunkt lautet "Ihr Programm muss berechnen ..."
user80551

8
floor(infinity)ist eine endliche Zahl? Was zum Teufel, Haskell?
Nneonneo

3
1/0! = Unendlich, es ist undefiniert.
RubberDuck

1
Bist du dir da sicher, @ ckuhn203? In GHC 7.6.3 und 7.8.2 verstehe ich isInfinite $ 1 / 0 -- True. Soweit ich das beurteilen kann, wird IEEE 754 1 / 0 als unendlich definiert .
Taylor Fausak

2
Oh, du meinst mathematisch. Ich stimme vollkommen zu. Aber so weit wie die Programmierung mit IEEE Floating - Point (und Haskell insbesondere) betrifft, so 1 / 0 == Infinity.
Taylor Fausak

15

Powershell - 1.12947668480335E + 42

99PB*9E9PB

Multipliziert 99 Pebibyte mal 9.000.000.000 Pebibyte.


7
98901 sq Petabyte? Ist das eine Methode, um die Oberflächenbitdichte von (zukünftigen) Festplatten mit hoher Kapazität zu messen?
user80551

Oh schön. Ich wusste nicht, dass Pebibytes jetzt möglich sind. Ich habe immer gedacht, es hört bei tebibytes auf.
Joey

@Joey Wenn sich MS nur beeilen und Yobibyte hinzufügen würde, könnte die Antwort sogar noch besser sein.
Rynant

1
Ich könnte das zu Pash hinzufügen, wenn es hilft ... ;-)
Joey

1+ "1" * 309 gibt 1.1111e308 aus, obwohl dies vermutlich den Geist bricht, wenn nicht das Wort der Regel zum Drucken von Zeichen. Es wird für die Ausgabe auf ein Double umgewandelt.
Tomkandy

14

J ( ((((((((9)!)!)!)!)!)!)!)!)

Ja, das ist viel. 10^(10^(10^(10^(10^(10^(10^(10^6.269498812196425)))))))nicht sehr genau zu sein.

!!!!!!!!9x

5
Ich habe einen Compiler gefunden , aber nach 20 Minuten !!9xhabe ich nichts zum Screenen gedruckt. Ich bezweifle sehr , dass !!!!!!!!9xwird immer berechnet werden.
Kyle Kanos

16
"Wenn die Ausführung auf dem schnellsten Computer der Welt länger als eine Stunde dauert, ist sie ungültig." Ich bin mir nicht sicher, ob dies gültig ist, da es nicht innerhalb einer Stunde ausgeführt wird
Claudiu

11
Es dauerte 70 Minuten, wurde aber !!9xschließlich auf dem Bildschirm gedruckt. Ich bin beeindruckt, dass es den Wert tatsächlich berechnet hat, aber trotzdem Punkt 5 komplett verfehlt.
Kyle Kanos

6
@Quincunx: Wahrscheinlich wahr, Voraussetzung für eine gültige Antwort ist jedoch, dass die Ausgabe des Programms erfolgreich ist. Diese Antwort verfehlt dieses Kriterium vollständig. Leider haben die Upvoter alle Kommentare, die darauf hinweisen, vernachlässigt und stimmen dennoch über die CJam & Golfscript-Antworten ab, die wahnsinnig groß sind und in angemessener Zeit berechnet werden.
Kyle Kanos

3
Abgestimmt, weil die Antwort nicht ausgedruckt wird.
isaacg

14

K / Kona : 8.977649e261 1.774896e308

*/1.6+!170
  • !170 Erstellt einen Vektor mit Zahlen von 0 bis 169
  • 1.6+ addiert eins zu jedem Element des Vektors und konvertiert in reelle Werte (Bereich ist 1,6 bis 170,6)
  • */ multipliziert jedes Element des Arrays

Wenn Kona Quad-Präzision unterstützen würde, könnte ich */9.+!9991e2584 erreichen. Leider nicht und ich bin auf doppelte Präzision beschränkt.


alte Methode

*/9.*9+!99
  • !99 Erstellt einen Vektor mit Zahlen von 0 bis 98
  • 9+ fügt 9 zu jedem Element des Vektors hinzu (jetzt reicht 9 bis 107)
  • 9.* multipliziert jedes Element mit 9.0 (implizit konvertiert in Real, also 81.0 bis 963.0)
  • */ multipliziert jedes Element des Vektors


11

Python - Variiert bis zu 13916486568675240 (bisher)

Nicht ganz ernst, aber ich dachte, es würde ein bisschen Spaß machen.

print id(len)*99

Von all den Dingen, die ich ausprobierte, lenbekam ich am konsequentesten große Ausweise.

Auf meinem Computer wurden 13916486568675240 (17 Stellen) und auf dieser Site 13842722750490216 (ebenfalls 17 Stellen) ausgegeben . Ich nehme an, es ist möglich, dass dies so niedrig wie 0 ist, aber es könnte auch höher gehen.


Tolle Idee, aber leider calculatenichts.
user80551

3
Ich glaube, dass das *99Teil eine Berechnung aufruft.
Kommando

Oh ja, ich fühle mich jetzt dumm.
user80551

1
Wenn Sie etwas verwenden, das kürzer ist als " id(id)oder" id(0j), können Sie "999
gnibbler

1
Aus kleiner genannt diejenigen in docs.python.org/2/library/functions.html , varsgibt konsequent den höchsten Wert (aber 4 Zeichen) , gefolgt von sum. Verwenden Sie print(sorted([(id(x),x)for x in[id,len,max,min,str,int,ord,chr,sum,map,abs,all,any,bin,bool,eval,oct,vars,iter,list,set,repr,round,zip,type,pow,dict,dir,hex]])[::-1])zu überprüfen.
user80551

10

Golfscript, 1e + 33.554.432

10{.*}25*

Berechnet 10 ^ (2 ^ 25) ohne Verwendung von Exponenten 96 Sekunden:

$ time echo "10{.*}25*" | ruby golfscript.rb  > BIG10

real    1m36.733s
user    1m28.101s
sys     0m6.632s
$ wc -c BIG10
 33554434 BIG10
$ head -c 80 BIG10
10000000000000000000000000000000000000000000000000000000000000000000000000000000
$ tail -c 80 BIG10
0000000000000000000000000000000000000000000000000000000000000000000000000000000

Es kann bis zu berechnen 9 ^ (2 ^ 9999) , wenn nur genügend Zeit zur Verfügung steht, aber das Inkrementieren des inneren Exponenten um eins nimmt das ~ Dreifache der Zeit in Anspruch, sodass das 1-Stunden-Limit ziemlich bald erreicht wird.

Erklärung :

Verwenden einer früheren Version mit derselben Idee:

8{.*}25*

Brechen sie ab:

8         # push 8 to the stack
{...}25*  # run the given block 25 times

Der Stapel am Anfang jedes Blocks besteht aus einer Nummer, der aktuellen Nummer. Dies beginnt mit 8. Dann:

.         # duplicate the top of the stack, stack is now | 8 | 8 |
*         # multiply top two numbers, stack is now       | 64 |

So sieht der Stack Schritt für Schritt aus:

8
8 8
64
64 64
4096
4096 4096
16777216
16777216 16777216

... usw. Geschrieben in mathematischer Notation ist der Fortschritt:

n=0, 8                     = 8^1  = 8^(2^0)
n=1, 8*8                   = 8^2  = 8^(2^1)
n=2, (8^2)*(8^2) = (8^2)^2 = 8^4  = 8^(2^2)
n=3,               (8^4)^2 = 8^8  = 8^(2^3)
n=4,               (8^8)^2 = 8^16 = 8^(2^4)

Was haben die beiden vor dem 2564 in Ihrer Ausgabe zu tun?
Kyle Kanos

@KyleKanos: Das ist nicht meine Ausgabe, sondern die Ausgabe von wc. Ich werde bearbeiten, um es klarer zu machen
Claudiu

Sie könnten verwenden wc -c, um die Ausgabe klarer zu machen
daniero

Nett! Ich hatte die gleiche Idee vor ein paar Minuten, aber es läuft mit CJam viel langsamer (was überraschend ist, da es schneller als GolfScript im Allgemeinen ist).
Dennis

1
Kleinere Verbesserung: 10{.*}25liefert 33.554.434 Ziffern und endet in 90 Sekunden auf meinem Computer. Ich weiß nicht warum, 10{.*}26*druckt aber nichts.
Dennis

7

wxMaxima ~ 3x10 49.948 (oder 10 8.565.705.514 )

999*13511!

Ausgabe ist

269146071053904674084357808139[49888 digits]000000000000000000000000000000

Ich bin mir nicht sicher, ob es den Spezifikationen (insbesondere dem Ausgabeformat 1) entspricht, aber ich kann noch größere Treffer erzielen:

bfloat(99999999!)

Ausgabe ist

9.9046265792229937372808210723818b8565705513

Das sind ungefähr 10 8.565.705.514, was deutlich mehr ist als die meisten Top-Antworten und in ungefähr 2 Sekunden berechnet wurde. Die bfloatFunktion gibt eine beliebige Genauigkeit .


6

Haskell, 4950

Oh Mann, das ist nicht viel! 10 Zeichen beginnen nach dem Dollarzeichen.

main=putStr.show$sum[1..99]

Warum nicht einfach print? Auch 9/0.000001ist größer als sum[1..99].
Taylor Fausak

5
In diesem Fall könnten wir 9 999 999 999 als untere Ergebnisgrenze betrachten.
Keen

@TaylorFausak Diese Antwort ist offensichtlich nicht ernst zu nehmen!
Flonk

6

Mathematica, 2.174188391646043 * 10 ^ 20686623745

$MaxNumber

Genau zehn Zeichen.


7
Berechnet es technisch irgendetwas und gibt es alle Ziffern und nicht nur die wissenschaftliche Notation aus?

@Yimin: Die Ausgabe kann in einem beliebigen Format erfolgen (Sie können also 999, 5e + 100 usw. drucken)
edc65 13.06.14

Der Wert wird nicht zur Kompilierungszeit festgelegt, sondern hängt von der jeweiligen Maschine ab, auf der der Befehl ausgeführt wird. Ich denke es zählt.
Michael Stern

5

Python-Shell, 649539 999890001

Beats Haskell, keine ernsthafte Antwort.

99999*9999

6
9999999999 ist größer, nicht wahr?
MadTux

5
@ MadTux Es gibt eine mehrdeutige Einschränkung für calculatedie Antwort.
user80551

1
Wenn diese Antwort richtig ist, ist meine auch 9**9**9**9richtig, da es sich um einen arithmetischen Operator handelt (keine eingebaute Funktion).
Kenorb

3
@kenorb Es ist eine Potenzierung , die nicht erlaubt ist.
user80551

5

Wolfram Alpha (zählt eine Website als Sprache)?

9! ! ! ! !

Ausgänge

10^(10^(10^(10^(10^(6.27...))))

Danke an Cory für den Tipp, dass Räume genauso gut funktionieren wie Parens.


Ich bin mir ziemlich sicher, dass dies die größte Zahl im Thread ist, aber Wolfram würgt, wenn er sie mit anderen Zahlen vergleicht, und ((99!)!)! > 4kehrt nie zurück.
gggg

Dies verstößt gegen die Regel, dass Sie es nicht aus dem Web erhalten können.
Kyle Kanos

1
Zu viele W | A!
Anonym Pi

5
Ich bin nicht einverstanden, dass dies gegen die Regeln verstößt. Es "liest es nicht aus dem Web", was gegen die Regeln verstößt, sondern "berechnet eine einzelne Zahl und druckt sie aus", wie es soll. Die Tatsache, dass die einzige verfügbare Oberfläche eine Website ist, bedeutet nicht, dass sie nicht als Programmiersprache gelten kann.
gggg

1
Es ist eine völlig gültige Antwort.
Microbian

4

Befunge-93 (1.853.020.188.851.841)

Ich bin froh, dass noch niemand Befunge gemacht hat (das ist meine Nische), aber verdammt, ich kann keinen cleveren Trick finden, um die Zahl zu erhöhen.

9:*:*:*:*.

Es ist also 9 ^ 16.

:*

Grundsätzlich multipliziert sich der Wert am oberen Rand des Stapels mit sich selbst. Der Wert oben auf dem Stapel lautet also:

9
81
6561
43046721
1853020188851841

und

.

Gibt den Endwert aus. Es würde mich interessieren, ob jemand bessere Ideen hat.



4

Ich würde dies lieber als Kommentar oben posten, aber anscheinend kann ich nicht, da ich ein Noob bin.

Python:

9<<(2<<29)

Ich würde mit einer größeren Bitverschiebung arbeiten, aber Python scheint zu wollen, dass der richtige Operand einer Verschiebung eine nicht lange Ganzzahl ist. Ich denke, das kommt dem theoretischen Maximum näher:

9<<(7<<27)

Das einzige Problem bei diesen ist, dass sie möglicherweise Regel 5 nicht erfüllen.


3

Matlab (1.7977e + 308)

Matlab speichert den Wert der größten Gleitkommazahl (doppelte Genauigkeit) in einer Variablen namens realmax. Das Aufrufen im Befehlsfenster (oder in der Befehlszeile) gibt den Wert aus:

>> realmax

ans =

  1.7977e+308

Da das OP nach einem berechneten Wert gefragt hat, sollten Sie diesen eingeben realmax+1. Ich habe es aus Spaß versucht und bin überrascht, dass es genau dieselbe Zahl zurückgibt wie Sie (dann habe ich gelacht, als ich merkte ... eps(realmax)=1.99584030953472e+292).
Hoki

3

Python, ca. 1,26e1388

9<<(9<<9L)

Gibt:

126026689735396303510997749074166929355794746000200933374690887068497279540873057344588851620847941756785436041299246554387020554314993586209922882758661017328592694996553929727854519472712351667110666886882465827559219102188617052626543482184096111723688960246772278895906137468458526847698371976335253039032584064081316325315024075215490091797774136739726784527496550151562519394683964055278594282441271759517280448036277054137000457520739972045586784011500204742714066662771580606558510783929300569401828194357569630085253502717648498118383356859371345327180116960300442655802073660515692068448059163472438726337412639721611668963365329274524683795898803515844109273846119396045513151325096835254352967440214290024900894106148249792936857620252669314267990625341054382109413982209048217613474462366099211988610838771890047771108303025697073942786800963584597671865634957073868371020540520001351340594968828107972114104065730887195267530118107925564666923847891177478488560095588773415349153603883278280369727904581288187557648454461776700257309873313090202541988023337650601111667962042284633452143391122583377206859791047448706336804001357517229485133041918063698840034398827807588137953763403631303885997729562636716061913967514574759718572657335136386433456038688663246414030999145140712475929114601257259572549175515657577056590262761777844800736563321827756835035190363747258466304L3763403631303885997729562636716061913967514574759718572657335136386433456038688663246414030999145140712475929114601257259572549175515657577053590262761777844800736563356262737634036313038859977295626367160619139675145747597185726573351363864334560386886632464140309991451407124759291146012572595725491755156575770535902627617778448007365633562627


3

Mindestens Python 3.5.0 (64-Bit), mehr als 10 ^ 242944768872896860

print("{:x}".format( 9<<(7<<60) ))

In einer idealen Welt wäre das so 9<<(1<<63)-1, aber es gibt nicht genug Bytes dafür. Diese Zahl ist so groß, dass sie fast 1 EiB Speicher benötigt, was ein bisschen mehr ist, als ich auf meinem Computer habe. Zum Glück müssen Sie nur etwa 0,2% des weltweiten Speicherplatzes als Swap verwenden, um ihn zu speichern. Dem binären Wert 1001folgen 8070450532247928832 Nullen.

Wenn Python für 128-Bit-Computer 9<<(9<<99)verfügbar ist , ist dies das Maximum , das weniger als 1 MiYiB Speicher benötigt. Dies ist gut, da Sie noch genügend adressierbaren Speicherplatz haben, um den Python-Interpreter und das Betriebssystem zu speichern.


"Nur 0,2% des weltweiten Speicherplatzes"
Benjamin Urquhart

1
@BenjaminUrquhart Wenn Sie denken, dass es gut ist, warum nicht upvote?
wizzwizz4

Es gibt deine doppelte Gegenstimme;)
Benjamin Urquhart

3

Cubix , 9.670457478596419e + 147 (nicht konkurrierend)

****"///**

Nicht konkurrierend, da Cubix neuer als diese Herausforderung ist. Sie können es hier online testen. Beachten Sie jedoch, dass die Nummer nicht gedruckt wird. Sie müssen das Programm nach den letzten beiden anhalten* Sekunden ausgeführt wurden, um den Wert auf dem Stapel zu sehen.

Wie es funktioniert

Cubix ist ein zweidimensionaler Esolang, bei dem der Code um einen Würfel gewickelt wird. Dieser Code entspricht genau dem folgenden Würfelnetz, in dem .es sich um ein No-Op handelt:

    * *
    * *
" / / / * * . .
. . . . . . . .
    . .
    . .

Dann wird der Code ausgeführt, wobei der Anweisungszeiger (IP) in der oberen linken Ecke der äußersten linken Seite beginnt und nach rechts zeigt. "Aktiviert den Zeichenkettenmodus, in dem alle Zeichen, die bis zum nächsten Mal vorkommen ", ihre Zeichencodes auf den Stapel schreiben. Die IP umschließt den Code vollständig und drückt drei /s (47), zwei* s (42) und zwei. Sekunden (46) auf den Stapel, bevor der Zeichenfolgenmodus wieder beendet wird.

Hier wird es interessant. Der erste Spiegel /reflektiert die IP und zeigt nach oben. es dreht sich dann um den Würfel und trifft diese Zeichen:

           
    * *
  /     *      
  .     .      
    . .

Die drei *s multiplizieren die beiden obersten Gegenstände auf dem Stapel. Im Gegensatz zu den meisten stapelbasierten Sprachen, in denen arithmetische Operatoren ihre Argumente einfügen, belässt Cubix die vorherigen Werte im Stapel. Das heißt also, dies berechnet 46*46 = 2116, 46*2116 = 97336, 2116*97336 = 205962976.

Wenn die IP die /wieder erreicht, wird sie nach rechts gedreht. Es trifft dann auf den nächsten Spiegel und folgt diesem Pfad:

    *  
    *  
    /         .
    .         .
    .  
    .  

Die beiden Sternchen multiplizieren die beiden obersten Elemente noch einmal. Dann leitet der Spiegel die IP wieder nach rechts und der dritte Spiegel wiederholt den Vorgang noch einmal:

      *
      *
      /     .  
      .     .  
      .
      .

Schließlich verlässt das IP den Spiegelabschnitt in Richtung Osten. Die beiden letzten Sternchen multiplizieren sich noch zweimal, sodass 9.670457478596419e + 147 auf dem Stapel verbleiben. Dies könnte mit gedruckt werden O, aber es gibt keine einfache Möglichkeit, dies zu tun, da praktisch jeder Punkt auf dem Würfel bereits verwendet wird.


2

Scala, 2 63 & ndash; 1

Arme, arme Scala. Benötigt mindestens 8 Zeichen, um einen BigIntWert zu erhalten, der nicht genügend Platz lässt, um ihn tatsächlich groß zu machen.

Mit nur 7 Zeichen (gezähltem) Code können wir jedoch das größtmögliche Positiv drucken Long:

print(-1L>>>1)

2

Brainf ** k 256 - 2147483647

>+[<+>+]<.

Wenn Sie die Tatsache ignorieren, dass die meisten Compiler und Interpreter Daten als ASCII-Äquivalent ausgeben (seien Sie leanient, es ist, was es ist;)) , wird der maximale Wert des Datentyps des Interpreters / Compilers zurückgegeben.

Auf einigen Systemen sind dies nur 256, auf einigen (z. B. meinem) ist dies der Maximalwert einer 32-Bit-Ganzzahl, dh 2 147 483 647.

Bearbeiten:

-.

Gibt dasselbe in viel weniger Zeichen aus


Diese zweite Antwort wird -1auf Dolmetschern gedruckt , die signierte Werte für das Band verwenden
Benjamin Urquhart,

2

Perl, nicht konkurrierend

Ich benutze dies, um eine kleine bekannte Ecke von Perl hervorzuheben.

Perl kann hier nicht wirklich mithalten, da es keine eingebauten Bignums hat (natürlich können Sie eine Bignum-Bibliothek laden).

Aber was jeder weiß, ist nicht ganz wahr. Eine Kernfunktion kann tatsächlich mit großen Zahlen umgehen.

Das packFormat wkann tatsächlich eine beliebige natürliche Zahl zwischen Basis 10und Basis konvertieren 128. Die Ganzzahl der Basis 128 wird jedoch als Zeichenfolgenbytes dargestellt. Die Bitfolge wird xxxxxxxyyyyyyyzzzzzzzzu den Bytes: 1xxxxxxx 1yyyyyyy 0zzzzzzz(Jedes Byte beginnt mit 1, mit Ausnahme des letzten). Und Sie können eine solche Zeichenfolge mit Unpack auf Basis 10 konvertieren. So können Sie Code wie folgt schreiben:

unpack w,~A x 4**4 .A

was gibt:

17440148077784539048602210552864286760481312243331966651657423831944908597692986131110771184688683631223604950868378426010091037391551287028966465246275171764867964902846884403624214574779667949236313638077978794791039372380746518407204456880869394123452212674801443116750853569815557532270825838757922217314748231826241930826238846175896997055564919425918463307658663171965135057749089077388054942032051553760309927468850847772989423963904144861205988704398838295854027686335454023567793114837657233481456867922127891951274737700618284015425

Sie können die 4**4Werte durch größere Werte ersetzen , bis Sie das Gefühl haben, dass dies zu lange dauert oder zu viel Speicher benötigt.

Leider ist dies viel zu lang für das Limit dieser Herausforderung, und Sie können argumentieren, dass das Ergebnis der Basis 10 in eine Zeichenfolge konvertiert wird, bevor es zum Ergebnis wird, sodass der Ausdruck nicht wirklich eine Zahl ergibt. Aber intern erledigt Perl wirklich die nötige Arithmetik, um die Eingabe in Basis 10 umzuwandeln, was ich immer für ziemlich ordentlich hielt.


2

TI-36 (nicht 84, 36), 10 Bytes, ca. 9.999985426E99

Ältere Rechner können ebenfalls in gewissem Umfang programmiert werden;)

69!58.4376

Dies liegt sehr nahe an der maximalen Reichweite, die ein TI-Rechner anzeigen kann:-1E100<x<1E100

Bildbeschreibung hier eingeben


2

Perl 6 , 456.574 Stellen

[*] 1..ↈ

Kein TIO, da die Ausführung 2 Minuten dauert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.