10バイトのコードの最大数


77

目標は、わずか10文字のコードを使用して、可能な限り最大数を(標準出力に)印刷することです。

  • 組み込みの指数関数を除き、言語の機能を使用できます。
    • 同様に、数値の入力に科学表記法を使用することはできません。(したがって、ありません9e+99。)
  • プログラムは、ユーザーからの入力なしで番号を印刷する必要があります。同様に、他のファイルやWebなどからの読み取りもありません。
  • プログラムは、単一の数値を計算して印刷する必要があります。文字列を印刷することも、同じ桁を何千回も印刷することもできません。
  • 何でも印刷するために必要なコードを10文字の制限から除外できます。たとえば、print x構文を使用するPython 2では、プログラムに最大16文字を使用できます。
  • プログラムは実際に出力で成功する必要があります。世界最速のコンピューターで実行するのに1時間以上かかる場合、それは無効です。
  • 出力は、任意の形式であってもよい(あなたは印刷することができるように9995e+100など)
  • Infinityは抽象的な概念であり、数字ではありません。したがって、有効な出力ではありません。


21
「計算」とはどういう意味ですか。また、If it takes longer than an hour to run on any computer in the world, it's invalid.客観的ではありません。私は(理論的には)1 T-状態を変更するために時間がかかり、コンピュータ製造することができ
user80551

4
ビットシフトは指数演算子としてカウントされ* 2^xますか?
クラウディウ

14
制限時間が世界最速のコンピュータの性能に依存し、それは不可能私たちは、有効な回答のセットを決定することを可能にする...私は本当に好きではないという事実
デイヴィッド・Z

6
べき乗関数は許可されていませんが、アッカーマン関数は許可されていますか?それは本当にarbitrary意的なようです。シンボリック操作が数値の「計算」と見なされる理由は不明のままです。
WolframH

回答:


26

Wolfram言語

ack(9!,9!)

ack(9!、9!) =ここに画像の説明を入力してください

出力は矢印表記です。


3
@KyleKanosその違いは、コード/プログラムがWebを呼び出していないためです。その他の例typescriptlang.org/Playground tryfsharp.org/Learn/getting-started
Adam Speight

35
Wolfram言語はRaspberry Piを使用するために利用可能であり、Webアクセスを必要としません。だから、その規則に違反していません。
アダムスパイト14年

6
非常に有効な答えだと思います。島にいてインターネットにアクセスできないという愚かな推論。「ウェブなし」の要件は、既に利用可能なリソースからの出力の印刷を防止することだけです。すべての回答は、コードを実行して出力を計算する限り有効です。Azureクラウドでコードを実行する最新のVisual Studioが登場するので、C#を制限しますか?または、Chromebookをお持ちの場合は資格がありませんか?
ミクロ

26
ack(99!,9)はるかに大きいです。
-jimmy23013

11
他の回答の一つは、ACK(4,2)は、彼が時間で計算することができ、最大これがなかった場合ので、私は驚くだろうだという...
ジェリーエレミヤ

120

Perl、> 1.96835797883262e + 18

time*time

最大の答えではないかもしれません...今日!しかし、十分な数千年待ってください。


編集:

コメントのいくつかに対処するために、で「十分に千年、」私は実際にはnは意味ですか100S年を。

公平を期すために、宇宙の大きな凍結/熱死が宇宙の終わり方である場合(最大10 100年と推定)、「最終」値は最大10 214であり、これは確かに他の応答(ただし、「ランダムな量子ゆらぎまたは量子トンネリングは、10 10 56年で別のビッグバンを生み出す可能性がある」)。より楽観的なアプローチ(たとえば、循環モデルまたはマルチバースモデル)を採用すると、時間が無限に続くため、ある宇宙のある日、ある高ビットアーキテクチャでは、答えは他のいくつかを超えるでしょう。

一方、指摘したように、time実際には整数/長さのサイズによって制限されるため、実際に~0は、常に何かよりも大きい数が生成されますtime(つまりtime、アーキテクチャでサポートされる最大値)。

これは最も深刻な答えではありませんでしたが、皆さんが楽しんだことを願っています!


23
私は不測の事態が好きなのでUpvoted
ティム・

5
timeラップアラウンドして、ある時点で小さな数値を返しませんか?それは、32ビットまたは64ビットのperlのだかどうかに依存しますが、私は推測する
クラウディウ

3
1000年〜3e10秒なので、出力として1e21前後をホバリングします。おそらく1e50年待っていたら、他の答えと競合し始めるかもしれませんか?
カイルカノス

8
これを「時間回時間」と発音しますか?:
ピエールアラード

1
宇宙の死熱の時間は夏時間を考慮していますか?さらに数秒の存在を獲得できます。
アルファ14年

65

Wolfram≅2.003529930×10 19728

はい、それは言語です!人気のあるWolfram Alphaサイトのバックエンドを駆動します。それはアッカーマン関数が内蔵されて私が見つけた唯一の言語だ 6つの未満文字に省略します。

8文字で:

$ ack(4,2)

200352993...719156733

または≅2.003529930×10 19728

ack(4,3)ack(5,2)などがはるかに大きいですが、大きすぎます。ack(4,2)はおそらく1時間以内に完全に計算できる最大のアッカーマン数です。

大きな数値は、次のように記号形式でレンダリングされます。

$ ack(4,3)

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

ルールでは、任意の出力形式が許可されているため、これは有効である可能性があります。これは10 10 19727より大きく、繰り返し階乗を除き、ここにある他のエントリのいずれよりも大きくなります。

しかしながら、

$ ack(9,9)

2↑⁷12 - 3

繰り返された階乗よりも大きい。10文字で取得できる最大数は次のとおりです。

$ ack(99,99)

2↑⁹⁷102 - 3

これはめちゃくちゃ巨大で、たとえ数字を繰り返しログに記録したとしても、ユニバースは数字の大部分を表すのに十分な大きさではありません。


85
悪くはありませんが、私のack(4,2)+1解決策とは一致しません。
user19057 14年

13
ack(4,2)+2、I WIN

1
あなたが勝ったと思う。
匿名Pi 14年

20
@ Kyle、Yiminこの投稿とその下のコメントには、誤解を招くような声明がたくさんあります。これはWolfram言語ではなく、W | Aのバックエンドとして使用されているものでもありません。Wolfram | Alphaへの単なる「自然言語」入力です。Wolfram言語でack(4,2)は無効な入力です。W | Aの自然言語入力は、プログラミング言語としてカウントされるべきではありません。それはチューリング完全ではなく、ユークリッドのアルゴリズムのような基本的なプログラムでさえ書くことはできません。このため、Googleのクエリよりも有効な回答だとは思いません。
ザボルクス14年

4
Wolfram言語はMathematicaで使用されているプログラミング言語であり、ここに文書化されています。Wolfram | Alphaは、Wolfram言語ではなく、自然言語を入力として使用します。
ザボルクス14年

30

Python2シェル、3,010,301桁

9<<9999999

長さの計算:Pythonはこれらの長い数値に「L」を追加するため、結果に数字があるよりも1文字多く報告されます。

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

最初と最後の20桁:

40724177878623601356... ...96980669011241992192

2
くそー!私は同じ答えを書いていた一方でこれが現れた
James_pic

2
それは本当にただな9 * 2**9999999ので、累乗法を使用していると主張することができます。
デニス

2
待って、***built-in*** exponentiation functions許可されていないので、これはルールの下で滑るかもしれません。+1
user80551 14年

1
長さを計算する数学的な方法:floor(log10(9 * 2**9999999))+1
ジャスティン

8
9 <<(9 << 99)は、終了する場合、はるかに大きくなります。
キースランドール

29

CJam、2×10 268,435,457

A28{_*}*K*

これにより、次のように定義されたbが計算されます。

  • 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

バックグラウンド

これはClaudiuの答えと同じ考えに従っていますが、それに基づいていません。私は彼を投稿してから数分に投稿した同様のアイデアを持っていましたが、それは時間制限に近づいていないので破棄しました。

ただし、Java 8へのアップグレードに対するaditsuの提案と10の累乗を使用するという私の考えにより、CJamはGolfScriptの範囲を超えた数値を計算できました。これは、RubyのBignumのバグ/制限によるものと思われます。

使い方

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,{)*_*}/

私のマシンでは5分もかからないので、まだ改善の余地があります。

これは、次のように定義された20を計算します。

  • 0 = 20

  • a n =(n×a n-12

使い方

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
母、カービィ?:)
aditsu 14年

これが何をしているのか説明していただけますか?
カイルカノス

2
参考までに、BigIntegerのパフォーマンスを確認するためにいくつかのテストを実行しました-100000を計算しました!文字列に変換されます。結果:Java 6:21秒の計算、44秒のtoString; java 7:14秒の計算、42秒のtoString; java 8:5秒の計算、1秒のtoString!
aditsu

1
@aditsu:Javaをアップグレードすると、ランタイムが5分から2秒に短縮されました!
デニス

20

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

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

編集:私の新しい答えは:

9<<(7<<33)

後世のための古い答え:

9<<(1<<35)

正確に10文字。

数字を16進数で印刷しています。

何でも印刷するために必要なコードを10文字の制限から除外できます。たとえば、print x構文を使用するPython 2では、プログラムに最大16文字を使用できます。

したがって、私の実際のコードは次のとおりです。

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

指定された時間に実行され、指定されたサイズの数を生成することの証明:

time python bignum.py > bignumoutput.py

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

マイナンバー> 10 ^(15032385538 * log(16))> 10 ^ 18100795813

初期値のため、上記のwc印刷出力より3桁少ない16進数0x9

python 2では7<<33長いので、<<入力として長くはかからないため、Python 3が必要です。

代わりに9 <<(1 << 36)を使用することはできません。

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

したがって、これはa<<(b<<cd)私のコンピューターで印刷可能なフォームの最大数です。

おそらく、世界最速のマシンは私よりも多くのメモリを持っているので、代わりの答えは次のとおりです。

9<<(9<<99)

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

しかし、私の現在の回答は誰もが提出した最大のものなので、おそらく十分でしょう。また、これはすべてビットシフトが許容されると仮定しています。それを使用している他の回答から、そうであるようです。


これまでのところ、これが圧倒的な最大の回答のようです。結局、10,000,000,000桁の数字です。
nneonneo

1
@nneonneo:私のソリューションの方が大きいと思います:)
Zaid 14年

別の答えには、1 MiYiB未満のメモリが必要であり、100ビットのアドレス可能なメモリが必要です(したがって、少なくとも128ビットのPythonまで動作しません)。(情報源:私の同様の答え
wizzwizz4

19

約18桁の短い定数名を持つ言語。

99/sin(PI)

私はこれをPHPの回答として投稿しますが、悲しいM_PIことにこれを少し長すぎます!ただし、PHPは8.0839634798317E + 17を生成します。基本的に、PI:pの絶対精度の欠如を悪用します。


1
tan(PI / 2)はできませんか?
user80551 14年

1
@ user80551はできますが、限界に残っている最後の文字を使用して、結果を99倍にできることに気付きました。
ニートザダークアブソル

Common Lispでは長すぎます:(/ 99(sin pi))(14文字)。TI-83のエラー:99/sin(π(8文字)ゼロによる除算が発生します。で作品のLibreOffice Calcの=99/SIN(PI((10文字、カウントされません=)808423047055000000. LibreOfficeの自動挿入最後の2計算))では=99/SIN(PI())
カーニグ14年

言語の精度に依存します。PHP 14では、10進数が一般的な値です。
ケノーブ

@kernighこの場合は問題ではありませんが、99/sin(π5バイトまたは8バイトでしょうか?TI-BASICは、一連のコマンドをシングルバイトとして保存することを知っています。あるsin(そのうちの一つ?
wchargin 14年

16

ハスケル

トリックなし:

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

おそらく何も計算せずに:

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

ニートの答えの適応:

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

3番目の箇条書きでは、「プログラムは計算する必要があります ...」
user80551 14年

8
floor(infinity)有限数ですか?一体何がハスケル?
nneonneo

3
1/0!=無限、未定義です。
ラバーダック14年

1
@ ckuhn203、それについて確かですか?GHC 7.6.3と7.8.2の両方で、を取得しisInfinite $ 1 / 0 -- Trueます。私が知る限り、IEEE 754は 1 / 0無限と定義しています。
テイラーフォーサック

2
ああ、あなたは数学的に意味します。私は完全に同意します。しかし、IEEE浮動小数点(特にHaskell)を使用したプログラミングに関する限り、1 / 0 == Infinity
テイラーフォーサック14年

15

Powershell-1.12947668480335E + 42

99PB*9E9PB

99ペビバイトに9,000,000,000ペビバイトを掛けます。


7
98901平方ペタバイト?(将来の大容量)ハードディスクの表面ビット密度を測定する何らかの方法ですか?
user80551

いいね。今ではペビバイトが可能だとは知らなかった。テビバイトで止まるといつも思っていました。
ジョーイ14年

@Joey今、MSが急いでヨビバイトを追加するだけなら、答えはさらに良くなる可能性があります。
リナント14年

1
それが役立つなら、それをパッシュに加えることができました... ;-)
ジョーイ14年

1+ "1" * 309は1.1111e308を出力しますが、これは精神を壊すものと思われますが、文字の印刷に関するルールの言葉ではありません。出力用にdoubleにキャストされます。
トムカンディ

14

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

ええ、それはたくさんあります。10^(10^(10^(10^(10^(10^(10^(10^6.269498812196425)))))))あまり正確ではありません。

!!!!!!!!9x

5
はコンパイラを見つけましたが、20分後、!!9x画面に何も印刷しませんでした。私は心からそれが疑う!!!!!!!!9xだろう今までに計算されます。
カイルカノス

16
「世界最速のコンピューターで実行するのに1時間以上かかる場合、それは無効です。」それは時間以内に実行されないので、これは有効だろうわからない
クラウディウ

11
70分かかりましたが、!!9x最終的にスクリーンに印刷されました。私はそれが実際に値を計算することを印象づけんだけど、それはまだ完全に弾丸5.失敗した
カイルKanos

6
@Quincunx:おそらく本当ですが、有効な答えの条件は、プログラムが出力で成功しなければならないということです。この答えはその基準を完全に満たしていない。悲しいことに、upvotersはこれを指摘すべてのコメントを無視していると、まだめちゃくちゃ巨大であるCJam&Golfscript答えの上にそれをupvote し、妥当な時間で計算。
カイルカノス

3
回答が印刷されないため、ダウン投票されました。
isaacg 14年

14

K / Kona8.977649e261 1.774896e308

*/1.6+!170
  • !170 0から169までの数字のベクトルを作成します
  • 1.6+ ベクトルの各要素に1を加算し、実数に変換します(範囲は1.6〜170.6)
  • */ 配列の各要素を乗算します

Konaが4倍精度をサポートしている場合*/9.+!999、1e2584を実行できます。悲しいことに、そうではなく、倍精度に制限されています。


古い方法

*/9.*9+!99
  • !99 0から98までの数字のベクトルを作成します
  • 9+ ベクトルの各要素に9を追加します(範囲は9〜107です)
  • 9.* 各要素に9.0を乗算します(暗黙的に実数に変換するため、81.0〜963.0)
  • */ ベクトルの各要素を乗算します


11

Python-さまざま、最大13916486568675240(これまで)

完全に深刻なわけではありませんが、ちょっと楽しいと思いました。

print id(len)*99

私が試したすべてのことのうち、len最も一貫して大きなIDを取得していました。

私のコンピューターでは13916486568675240(17桁)、このサイトでは 13842722750490216(17桁)でした。これで0程度の低さになる可能性があると思いますが、高くなる可能性もあります。


素晴らしいアイデアですが、残念ながらそれはcalculate何もしません。
user80551

3
*99部品が計算を呼び出すと信じています。
コマンドー

そうそう、/ meは今ではバカな気分だ。
user80551

1
より短いものを使用する場合- id(id)またはまたは-と言うid(0j)ことができます999
ニブラー14年

1
docs.python.org/2/library/functions.htmlにある小さい名前のもののうち、vars一貫して最高値(ただし4文字)を与え、その後にsumprint(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])チェックに使用します。
user80551 14年

10

Golfscript、1e + 33,554,432

10{.*}25*

Computesは10 ^ (2 ^ 25)、指数を使用せずに、96秒で実行されます。

$ 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

9 ^ (2 ^ 9999)十分な時間を与えられた場合、最大でを計算できますが、内部指数を1増やすと、時間が3倍かかるため、1時間の制限にすぐに到達します。

説明

同じ考えで以前のバージョンを使用する:

8{.*}25*

分解する:

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

各ブロックの先頭のスタックは、1つの数字、つまり現在の数字で構成されています。これはから始まります8。次に:

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

そのため、スタックは次のようになります。

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

...など。数学表記で書かれた進行は次のとおりです。

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)

出力の2564の前にある2つとはどういう関係ですか?
カイルカノス

@KyleKanos:それは私の出力ではなく、の出力ですwc。編集してわかりやすくします
Claudiu

あなたは使用することができwc -c、出力をより明確にするために
daniero

いいね!数分前にも同じ考えを思いつきましたが、CJamを使用すると実行速度が大幅に低下します(一般的にGolfScriptよりも高速であるため、これは驚くべきことです)。
デニス

1
マイナーな改善:10{.*}2533,554,434桁を配信し、私のマシンで90秒で終了します。理由はわかりませんが、10{.*}26*何も印刷されません。
デニス

7

wxMaxima〜3×10 49948(または10 8565705514

999*13511!

出力は

269146071053904674084357808139[49888 digits]000000000000000000000000000000

仕様(特に出力形式の1つ)に完全に適合するかどうかはわかりませんが、さらに大きくヒットできます。

bfloat(99999999!)

出力は

9.9046265792229937372808210723818b8565705513

これはほぼ10 8,565,705,514で、ほとんどの上位回答よりも大幅に大きく、約2秒で計算されました。このbfloat関数は任意の精度を与えます。


6

ハスケル、4950

ああ、それはそんなに多くない!ドル記号の後に10文字が始まります。

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

どうしてprint?また、9/0.000001はより大きいですsum[1..99]
テイラーフォーサック14年

5
そのレートでは、9 999 999 999が結果の下限であると考えるかもしれません。
キーン

@TaylorFausakこの答えは明らかに真剣に受け止められるべきではありません!
フランク14年

6

Mathematica、2.174188391646043 * 10 ^ 20686623745

$MaxNumber

正確に10文字。


7
技術的には何かを計算していますか?科学的な表記だけでなく、すべての数字を出力していますか?

@Yimin:出力はどのような形式でもかまいません(したがって、
999、5e

値はコンパイル時に設定されませんが、コマンドが実行される特定のマシンに依存します。重要だと思います。
マイケルスターン

5

Pythonシェル、649539 999890001

Haskellを打ち負かしました

99999*9999

6
9999999999は大きいですね。
MadTux 14年

5
@MadTux calculate答えにはあいまいな制限があります。
user80551 14年

1
この答えが正しければ、9**9**9**9算術演算子(組み込みfuncではない)なので、どちらも正しいです。
ケノーブ

3
@kenorb 許可されていないべき乗法が組み込まれています。
user80551

5

Wolfram Alpha(ウェブサイトは言語としてカウントされますか?)

9! ! ! ! !

出力

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

スペースが機能するだけでなく、カッコのヒントについてはCoryに感謝します。


これは私の投稿の時点でスレッド内で最大の数字であると確信していますが、Wolframは他の数字と比較することで窒息し((99!)!)! > 4ます。
gggg 14年

これは、Webから取得できないというルールに反します。
カイルカノス

1
W | Aが多すぎる!
匿名Pi 14年

5
これが規則に違反することに同意しません。ルールに反する「Webから読み取る」のではなく、実際には「1つの数値を計算して印刷する」のが本来の目的です。利用可能な唯一のインターフェースがウェブサイトであるという事実は、それがプログラミング言語として数えられないことを意味しません。
gggg 14年

1
これは完全に有効な答えです。
ミクロ

4

Befunge-93(1,853,020,188,851,841)

まだ誰もBefungeをやったことはありません(それは私のニッチです)が、数を増やすための巧妙なトリックを見つけることができません。

9:*:*:*:*.

だから9 ^ 16です。

:*

基本的に、スタックの一番上の値にそれ自体を乗算します。したがって、スタックの最上位の値は次のとおりです。

9
81
6561
43046721
1853020188851841

そして

.

最終値を出力します。誰かがより良いアイデアを持っているかどうかを確認したいと思います。



4

上記のコメントとして投稿したいのですが、どうやら私は初心者なのでできません。

Python:

9<<(2<<29)

より大きなビットシフトを使用しますが、Pythonはシフトの右オペランドを非長整数にすることを望んでいるようです。これは理論上の最大値に近づくと思います。

9<<(7<<27)

これらの唯一の問題は、ルール5を満たさない可能性があることです。


3

Matlab(1.7977e + 308)

Matlabは、と呼ばれる変数に最大(倍精度)浮動小数点数の値を保存しますrealmax。コマンドウィンドウ(またはコマンドライン)で呼び出すと、その値が出力されます。

>> realmax

ans =

  1.7977e+308

OPは計算された値を返すように要求したため、を配置する必要がありrealmax+1ます。私はそれを楽しみのために試してみましたが、それはあなたが持っているものとまったく同じ数を返します(それから私は気づいたときに笑いました... eps(realmax)=1.99584030953472e+292)。
ホキ

3

Python、約 1.26e1388

9<<(9<<9L)

与える:

126026689735396303510997749074166929355794746000200933374690887068497279540873057344588851620847941756785436041299246554387020554314993586209922882758661017328592694996553929727854519472712351667110666886882465827559219102188617052626543482184096111723688960246772278895906137468458526847698371976335253039032584064081316325315024075215490091797774136739726784527496550151562519394683964055278594282441271759517280448036277054137000457520739972045586784011500204742714066662771580606558510783929300569401828194357569630085253502717648498118383356859371345327180116960300442655802073660515692068448059163472438726337412639721611668963365329274524683795898803515844109273846119396045513151325096835254352967440214290024900894106148249792936857620252669314267990625341054382109413982209048217613474462366099211988610838771890047771108303025697073942786800963584597671865634957073868371020540520001351340594968828107972114104065730887195267530118107925564666923847891177478488560095588773415349153603883278280369727904581288187557648454461776700257309873313090202541988023337650601111667962042284633452143391122583377206859791047448706336804001357517229485133041918063698840034398827807588137953763403631303885997729562636716061913967514574759718572657335136386433456038688663246414030999145140712475929114601257259572549175515657577056590262761777844800736563321827756835035190363747258466304L3763403631303885997729562636716061913967514574759718572657335136386433456038688663246414030999145140712475929114601257259572549175515657577056590262761777844800736563321827756835035190363747258466304L3763403631303885997729562636716061913967514574759718572657335136386433456038688663246414030999145140712475929114601257259572549175515657577056590262761777844800736563321827756835035190363747258466304L


3

少なくともPython 3.5.0(64ビット)、10 ^ 242944768872896860以上

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

理想的な世界では、これはになり9<<(1<<63)-1ますが、そのための十分なバイトがありません。この数は非常に大きいため、保持するためにほぼ1 EiBのメモリが必要になります。これは、コンピュータにあるよりも少し多くなります。幸いなことに、世界のストレージスペースの約0.2%をスワップとして使用して保持するだけで済みます。バイナリの値の1001後には8070450532247928832ゼロが続きます。

Pythonが128ビットマシンに対応している場合、最大値は9<<(9<<99)となり、1 MiYiB未満のメモリしか必要ありません。Pythonインタープリターとオペレーティングシステムを格納するのに十分なアドレス可能なスペースが残っているため、これは良いことです。


「世界のストレージスペースのわずか0.2%」
ベンジャミンアーカート

1
@BenjaminUrquhartあなたがそれが良いと思うなら、なぜ賛成しないのですか?
wizzwizz4

二重賛成票があります;)
ベンジャミンアーカート

3

Cubix、9.670457478596419e + 147(非競合)

****"///**

Cubixはこの課題よりも新しいため、競合しません。ここでオンラインテストできますが、実際に番号を印刷するわけではないことに注意してください。*スタックの値を確認するには、最後の2つの実行後にプログラムを一時停止する必要があります。

使い方

Cubixは、コードがキューブの周りにラップされる2次元のエソランです。このコードは、次のキューブネットとまったく同じです.

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

次に、コードが実行されます。命令ポインター(IP)は、左端の面の左上隅から始まり、右を向いています。"文字列モードをオンにします。このモードでは、次に"文字コードがスタックにプッシュされるまで、すべての文字が検出されます。IPはコードを完全にラップし、3 /s(47)、2 *s(42)、および2 .s(46)をスタックにプッシュしてから、ストリングモードを再び終了します。

ここが面白いところです。最初のミラー/はIPを反映するため、上向きになります。次に、キューブを中心に回転し、これらの文字をヒットします。

           
    * *
  /     *      
  .     .      
    . .

3 *sは、スタックの上の2つのアイテムを乗算します。現在、算術演算子が引数をポップするほとんどのスタックベースの言語とは異なり、Cubixは以前の値をスタックに残します。したがって、これはを計算することを意味します46*46 = 2116, 46*2116 = 97336, 2116*97336 = 205962976

IPが/再び到達すると、右になります。次に、次のミラーにヒットし、次のパスに従います。

    *  
    *  
    /         .
    .         .
    .  
    .  

2つのアスタリスクは、上の2つのアイテムをもう一度乗算します。その後、ミラーはIPを再び正しい方向に向け、3番目のミラーはプロセスをもう一度繰り返します。

      *
      *
      /     .  
      .     .  
      .
      .

最後に、IPはミラーセクションを東に向けます。最後の2つのアスタリスクはさらに2回乗算され、スタックに9.670457478596419e + 147の結果が残ります。これはで印刷できますOが、実際にはキューブ上のすべてのスポットがすでに使用されているため、簡単に行う方法はありません。


2

Scala、2 63 -1

貧しい、貧しいScala。BigInt値を取得するには少なくとも8文字を使用しますが、実際に大きくするのに十分なスペースを残していません。

しかし、(カウントされた)コードが7文字しかないため、可能な限り最大のプラスを出力できますLong

print(-1L>>>1)

2

Brainf ** k 256-2147483647

>+[<+>+]<.

ほとんどのコンパイラーとインタープリターがデータをasciiに相当するものとして出力するという事実を無視すると(リーンエントであり、;))、これはインタープリター/コンパイラーのデータ型の最大値を返します。

一部のシステム(これはたとえば私の場合)では、これはちょうど256ですが、これは32ビット整数の最大値、つまり2 147 483 647です。

編集:

-.

同じものをより少ない文字で印刷します


その2番目の回答は-1、テープに署名された値を使用するインタープリターに出力されます
ベンジャミンアーカート

2

Perl、非競合

私はこれを使用して、perlの少し知っているコーナーを強調しています。

Perlは組み込みのbignumを持たないため、実際にはこれに対抗できません(もちろん、bignumライブラリをロードできます)。

しかし、誰もが知っていることは完全に真実ではありません。1つのコア関数が実際に大きな数を処理できます。

このpack形式wは、実際にはbase 10とbaseの間の任意のサイズの自然数を変換できます128。ただし、ベース128整数は文字列バイトとして表されます。ビット文字xxxxxxxyyyyyyyzzzzzzz列はバイトになります 1xxxxxxx 1yyyyyyy 0zzzzzzz(最後のバイトを除くすべてのバイトは1で始まります)。そして、そのような文字列をunpackで10進数に変換できます。したがって、次のようなコードを書くことができます。

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

与えるもの:

17440148077784539048602210552864286760481312243331966651657423831944908597692986131110771184688683631223604950868378426010091037391551287028966465246275171764867964902846884403624214574779667949236313638077978794791039372380746518407204456880869394123452212674801443116750853569815557532270825838757922217314748231826241930826238846175896997055564919425918463307658663171965135057749089077388054942032051553760309927468850847772989423963904144861205988704398838295854027686335454023567793114837657233481456867922127891951274737700618284015425

4**4時間がかかりすぎる、またはメモリを使いすぎると感じるまで、より大きな値で置き換えることができます。

残念ながら、これはこの課題の制限には長すぎます。ベース10の結果は結果になる前に文字列に変換されるため、式は実際には数値を生成しません。しかし、内部的にはperlは入力を10に変換するために必要な演算を実際に行います。


2

TI-36(84、36ではない)、10バイト、約 9.999985426E99

古い計算機もある程度プログラムできます;)

69!58.4376

これは、TI計算機が表示できる最大範囲に非常に近いです。-1E100<x<1E100

ここに画像の説明を入力してください


2

Perl 6、456,574桁

[*] 1..ↈ

実行に2分かかるため、TIOはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.