最長出力の最短コード[終了]


10

これはかなりシンプルです。

できるだけ多くの出力を生成しながら、できるだけ短いプログラムを作成します。

面白くするために、無限の出力を生成するプログラムは失格となります。

勝者は、最大の出力サイズ/コードサイズ比を持つプログラムです。

結果は、私のコンピューターで動作するものに基づいています。これは、Mac OS X 10.7.5を実行し、Intel Core i5と8GBのメモリを搭載したMacです。


あなたが何を求めているのか正確にはわかりません。回答は、無制限のメモリ、無制限のインデックスサイズなどを想定する必要がありますか?
Peter Taylor

@PeterTaylor直した。
tbodt 2013年

5
私がそれを理解することができれば驚かされますが、何人かの解釈者が空のファイルを解釈してコンテンツを生成する方法があると確信しています-これも無限の比率を与えます。

8
@LegoStormtroopr GolfScriptはその目的に適合します。:出力の一つの文字を生成します空のスクリプトを実行\n
プリモ

1
@ user2509848いいえ、私が言ったように、無限の出力はカウントされません。
tbodt 2014年

回答:


18

Python:8文字のコード、387420489文字の出力-比率:48427561.125:1

'a'*9**9

さらに**9sを追加することで、比率を無限大にする傾向があります。

'a'*9**9**9
'a'*9**9**9**9
etc.

例えば:

'a'*9**9**9**9**9**9

これは、比が〜10 10 10 10 10 8.568(想像以上に大きい数)です。


他のものより優れています...
tbodt 2013年

@tbodtなんで?O_o @arshajii十分な数**9のs を追加すると、最終的にはそうなりInfinityませんか?
ドアノブ

@Doorknob申し訳ありませんが、私はPythonについてのすべてを知りません。ここでの課題は**9、出力がになる前に配置できるの最大数を把握することInfinityです。
tbodt 2013年

1
@Doorknob Pythonのintは任意の精度を持っています。
arshajii 2013年

@tbodt上記のコメントを参照してください。
arshajii 2013年

16

したがって、これらはすべて、非常に少ないコードで多くの出力を生成する優れたプログラムですが、どれも実際には短いものではありませ ...

brainfuck、5文字、255バイトの出力

-[.-]

これは、brainfuckが本当に優れている唯一の使用例だと思います。これが勝つことはないと思いますが、Pythonの例よりもうまくできるとは思えません。それだけでなく...

ブレインファック、4文字、無限出力

-[.]

これは、最も短い無限出力プログラムだと思います。

実際、ちょっと待ってください。私の仲間は本当に良いものを思いついただけです。

Python、80バイト、不明な量の出力

from datetime import datetime
while datetime.now()!=datetime.max()
 print "This will probably get disqualified"

このプログラムは間違いなく最終的に停止しますが、約8,000年後にのみ停止します。出力される文字の正確な数は、コンピューターが文字を生成できる速度によって異なります。


1
私はpython 1が好きです:D
Kevin Cox

2
「これが世の中で最も短い無限出力プログラムであると推測します」いや、これはBefungeの暗黙のループ(ラップアラウンド経由)が便利になるところ.です。0文字の無限ストリームを出力します。
FireFly 2013

14

Perl-19バイト、187200000000000000バイトの出力(9852631578947368.42:1)

print+($]x9e7)x26e7

1.7 GBを超えるメモリを使用せずに、1つの印刷ステートメントで166ペタバイト。

この挑戦をもっと面白くしたいくつかのことが、私が思ったよりもありました。Perlは、1 GBを超えるメモリを単一のリストに割り当てることを拒否しているようです。したがって、内部文字列への4バイトのスカラー参照は、26e7≈2 28回しか繰り返されません。$]「古いperlバージョン」番号で、文字列として8バイト長で、に似てい5.016002ます。

より多くのシステムメモリがあれば、より高くなるはずです。完全な8GBが実際に利用可能であると仮定すると、$]x9e8代わりに1.62エクサバイトを出力する内部文字列に使用できるはずです。


16
「1,000,000匹のサルに1,000,000匹のタイプライターを与え、1,000,000年間ものを書いてもらうと、1匹のサルが最終的にJavaプログラムを作成します。他のサルは、Perlスクリプトを作成するだけです。」それは私がこれを見たときに私が考えたものだ:Pのソース
ドアノブ

5

RubyおよびPython、13文字、599994文字の出力、最大46153:1の比率

999999**99999

非常に大きな数を別の非常に大きな数の累乗で単純にレイズします。実行には約20秒かかります。数が無限になるので、数を増やすことはできません。

(私はこれを以前行いました、私は現在さらに長い出力のためのループを作ることに取り組んでいます)

編集:やった!

Ruby、28文字、6e599999文字の出力、最大6e599998の比率(私は思う)

a=999999**99999;a.times{p a}

(明らかな理由により)未テストですが、最初の数値は約1e599994であり、これに599994を掛けると、約6e599999になります。理論的には機能しますが、コンピュータがクラッシュするかどうかはわかりません。免責事項:コンピュータに何らかの害を及ぼす場合、私は責任を負いません:P

もちろん、続けることができます:

Ruby、37文字、6e359992800041文字出力、最大6e359992800040比率

a=999999**99999;a.times{a.times{p a}}

など、しかし、私はどのコンピュータでもそれを処理できるとは思えません:P


それは本当に多言語です...
tbodt 2013年

@tbodt Hehe、そうです!変更を追加しても、変更は行われません
ドアノブ

5

無限の入力が許可された場合、

cat /dev/random

そうではないので、

head -99 /dev/random

(25128出力:20入力= 1256.4:1)

私はLinuxボックスを使用していませんが、次のようなことができると思います

timeout 99d cat /dev/random

と巨大な出力を取得します。(GigaWattの応答による)


2
1文字を置き換えて、出力を8562倍長くすることができます timeout 99d。はい、99日間のランタイムです。また、これについては定かではありませんが、最終的にはエントロピープールを空にする/dev/randomとブロックされますので、/dev/urandomより適切な場合があります。(私はなんとかで40 MB /秒、urandom128 KB /秒しか得られませんでしたrandom
Llama氏2013年

@GigaWatt最高です。
Tristin 2013年

4

HQ9 +、11471

9

実際の文字数はインタープリターによって異なりますが、たぶん10000くらいくらいでしょうか?


HQ9 + と何ですか?初めて聞いたよ。
tbodt 2013年

ああ、申し訳ありませんが、「実際の」プログラミング言語ではないため、ほとんどが冗談でしたが、esolangs.org
Dom Hastings

2

C#:108文字。比率:742123445489230793057592:1

for(ulong i=0;i<ulong.MaxValue;i++){Console.Write(new WebClient().DownloadString(@"http://bit.ly/dDuoI4"));}

これは、ウィキペディアの米国最高裁判所の法務書記(4344904文字)を18446744073709551615回ダウンロードして印刷するだけです。


これには、URL短縮機能が必要です。そのことはよくわからない。
tbodt 2013

1
OK。そして、これについては何for(ulong i=0;i<ulong.MaxValue;i++){Console.Write(new string('a',int.MaxValue));}ですか:2147483647文字* 18446744073709551615回= 39614081238685424720914939905/81 =>比率:489062731341795366924875801
thepirat000

ずっといい。URLの短縮は必要ありません。
tbodt 2013

2

〜-〜!-比率:(64 4 4 4 64)/ 154〜 = 10 10 10 10 10 1.583328920493678

'=~~~~,~~~~,~~~~:''=|*<%[%]'=',',',':''&*-~|:'''=|*<%[%]''&',',',':'''&*-~|:''''=|*<%[%]'''&',',',':''''&*-~|:''''&':''=|*<%[%]@~~~~,~~~~,~~:''&*-~|:''&':

動作方法:最初に、'4 ^ 3または64 ''に設定'します。次に、'^ 4 *に設定する関数を作成します(*は入力です)。'''次に''、入力を'^ 4 として呼び出す関数を作成します。次に、''''関数呼び出し作られ''''、それの入力として^ 4。''''次に、64の入力で呼び出されます。最後に、''スペースを*回出力する関数に変更されます。次に、これはの入力で呼び出されます'

、最終的には、判明し'ている 64個の4 4 4 64個の、そして私のプログラムの長さがある154それをWolfram | Alphaにパンチすると、10 10 10 10 10 1.583328920493678が吐き出されます。これは計算する必要さえありません。何桁含まれているのかさえわかりませんが、64 4 4には463が含まれています。単項の明示的な数値のみをサポートし、指数関数を持たない言語には非常に便利です; 3

これをもっと大きくすることもできましたが、やり過ぎです。


1

JavaScript:27文字; 260,431,976文字の出力。9,645,628.74比率

for(s=i=61;s=btoa(s),i--;)s

このコードは、61Base64への入力を61回再帰的にエンコードします。長さの入力nをBase64にエンコードすると、長さの出力が生成n * 8/6され、4の倍数に切り上げられます。

これは、Base64エンコード機能をネイティブでサポートするJavaScriptコンソール環境から実行する必要がありますbtoa。(Node.jsではなく、すべての最新のブラウザー。)注:Chromeはを超えて実行できませんがi=61、Firefoxはにしか到達できませんi=60。また、Chromeのコンソールは大きすぎるため、実際には出力を表示できませんが、実行すると結果のサイズを確認できます。

for(s=i=61;s=btoa(s),i--;)s.length

このプログラムは、最大のために実行させた場合i=99、それはサイズの仮想的な出力生み出す14,566,872,071,840周り5400億(5.39e11)の仮定の割合のために、(14500000000000、14.5e12)文字を。


1

Ruby、23文字-〜500000000000000(5e14)出力

while rand
puts 0
end

Ti-Basic 84、13文字-〜3000出力

:Disp 1
:prgmA

プログラムに名前を付ける prgmA


1

ルビー、283 96 44文字

a=1e99.times;a{a{a{a{a{puts'a'*99}}}}}}}}}}

それほど短くはありませんが、出力ではそれを補正します。これは、まだ測定できていないほどです。


2
私の計算では、これは1e127文字出力に関するものです。とにかく、変数に割り当てると、コードサイズが約半分になります。また、1e99スペースが少なくて済みます。また、使用mapの代わりにeach、使用putsの代わりにprint、間の余分な空白を削除printして"ier...。また、大きな文字列を'a'*999(または?a*999)に置き換えることもできます。概要:これはまったくゴルフではありません
ドアノブ

@Doorknobありがとう。ルビについての感動的なガイドの第3章を除いて、ルビについては何も知りません。
tbodt 2013年

ええ、なぜ(0..1e99).map変数に代入しないのですか?いいねa=(0...1e99).map;a{a{a{a{a{puts'a'*99}}}}}
ドアノブ

Rubyのインタプリタが評価中にメモリを使い果たしましたa=(0...1e99).map。あなたはそれを少し後退させたいかもしれません。0..1e9約4GBを使用します。
primo 2013年

1

Mathematica 9文字比:〜4564112:1

以下はMathematica入力の画像です。私はそれをSEでレンダリングする方法を理解していません。

指数

以下は、出力の桁数を示すスクリーンショットです。IntegerDigits出力を数字のリストに変換します。Length桁数を数えます。

カウント

入力するキーストローク:9ctrl69ctrl69ctrl69ctrl69....


1
何?それをMathematicaに入力できますか?
tbodt 2013年

はい、これはMathematicaへの正当なインプットです。
DavidC 2013年

そして、どのキーストロークが必要ですか?
tbodt 2013年

@tbodtキーストロークが回答に表示されるようになりました。
DavidC 2013年

1
順序を指定する必要があるかどうかはわかりませんが、トップダウンで計算する必要があります。(9 ^ 9)^ 9は78桁の数字ですが、9 ^(9 ^ 9)は369,693,100桁の数字です(ありがとう、wolframalpha)
SeanC 2013年

0

Befunge-93:48文字、約((2 ^ 32)^ 2)* 10文字の出力

Befungeのスタックは理論的には無限ですが、スタックに格納される数は、符号なし長整数(ここでは32ビットと想定)のサイズに制限されています。したがって、Befungeインタープリターにとって、(x + 1)> xはxの適切な値に対してfalseです。この事実を使用して、最初にすべての値をゼロから最大まで(2回、3分の1ごとに1)プッシュし、次にスタックの各値について出力してデクリメントし、ゼロに達したときにポップします。最終的にスタックが空になり、プログラムが終了します。私は出力サイズが少しずれているかもしれませんが、それはその球場のどこかにあるはずです。

>::1# + #1\`# :# _> #- #1 :# :# .# _# .# :# _@

0

C:48文字、約 (2 ^ 32-1)* 65090バイトの出力

main(){for(int i=1<<31;i<~0;)puts("!");main();}

65090は正確ではなく、スタックサイズに依存することに注意してください。プログラムは、クラッシュすると最終的に停止します。また、私はputs()にますます長い文字列を入れて配給量を無限大に近づけることができましたが、それはかなり奇妙に思われます。


1
それは無限ループです
izabera 2014年

痛い、あなたは正しいと思います。それを修正する方法を理解できるかどうかを確認します。
Stuntddude 2014年

0

java(131):不明ですが有限量

class A{public static void main(String[] args){while(Math.random()>0){for(long l=0;l!=-1;l++){System.out.println("1234567890");}}}}

Math.random()の低い確率を使用してループで0に到達し、出力1234567890でforeachを介して2 ^ 64-1ループに入る。


0

Python 3、115バイト、7983年間実行(不明な文字数)

編集:ymbirttは私にそれを打ち負かしました._。

私はこれが実際に短いわけではなく、他のPythonの回答がはるかに長いことを知っていますが、これを試してみることにしました。

プログラムは約8000年実行されますが、ご存知のとおり、かなり長い時間です。

それが行うことは、datetime.datetime.now()関数を使用して現在の時刻を継続的に取得し、それをと比較すること9999-12-31 24:59:59.999999です。これは、Pythonの最大日付がわかっている限りです。

ある場合等しい、プログラムが停止します。そうでない場合は、を継続的に出力しますa

import datetime
while 1:
    if str(datetime.datetime.now())=="9999-12-31 24:59:59.999999":exit
    else:print("a")

1
その瞬間を逃した場合はどうなりますか?
C5H8NNaO4 2016年

@ C5H8NNaO4 7983年間このままにしておくと、見逃せないでしょう。
m654 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.