それ自体よりも短い(文字数で)プログラムで印刷できる最小の正の10進整数は何ですか?


179

上記の質問は明確だと思いますが、念のため:

  • 正の10進整数を印刷する完全なプログラム(関数だけでなく)を作成し、オプションで単一の改行を続けます。

  • 適格なプログラムは、出力がバイト単位で測定されるプログラムのソースコードよりも長い(バイト単位で)プログラムです(プログラムソースコードのASCIIまたはUTF-8エンコーディングを想定)。

    つまり、コードは結果の数値の桁数よりも短くなければなりません。

  • 先行ゼロは、すべての状況下で許可されていません。先行ゼロをカウントすると、問題がトリビアライズされます。先行ゼロを無視すると、質問が不必要に複雑になります。

  • 勝者プログラムは、最小の大きさで整数を出力する資格プログラムです。

リーダーボードスニペット


64
ホットネットワーク質問のナンバー1 。...最初の質問は悪くない
センモウヒラムシ

6
@Kslkgh厳密にそれ以下の場合、それ以外の場合、暗黙的に最後の値を出力するプログラムにとって問題は簡単です。
アランドール

6
ある1.0整数は?
histocrat

23
UTF-8の制限はばかげて有害です。エンコードに関係なく、バイトはバイトです。私は強くに従って、有効な(彼らは現在、彼らは文字ベースでない言語を禁止しているなどとして、あなたがルールを変更することをお勧めします(例:マインクラフト、ピート、フォルダ)、またはその「本当の」よりも長いUTF-8バイト数を持って、この質問)バイトカウント(APL、TI-BASIC、マジ、ゼリーなど)。
リトシアスト

7
@ZachGatesこれは、HNQリストの仕組みではありません。;)
マーティン・エンダー

回答:


193

網膜、スコア1


空のプログラムは、入力内の空の正規表現(空の文字列)の一致数をカウントします。これは正確に1つの一致であるため、を出力し1ます。

オンラインでお試しください。


39
...勝者がいます。
アランドール

9
ちなみに、マッチの数は無限だと思います。空の文字列は無制限に繰り返すことができ、無限に一致します。
ニカエル

50
@nicael幸い、それは正規表現の仕組みではありません。;)
マーティン・エンダー

8
正規表現エンジンに依存する@MartinBüttner。空の文字列と一致させようとすると、だまされるシステムに間違いなく遭遇しました。
スパー

19
@LorenPechtelのルールは、空のプログラムがほとんどの言語で自明の解決策であるような課題にのみ適用されます。この空のプログラムには実際に非自明なセマンティクスがあり、Retinaにはこのような課題があるため、この動作はありませんが、すべての単一行プログラムの動作の唯一の一貫した一般化であるため、ここでは公正なゲームだと思います。
マーティンエンダー

73

パイス、10

T

Pythを使用する最初の試み。質問が明確になったので、10が最小数になるようです。Pythでは、文字Tが数字10から始まるため、これは単に10ソースコードの長さよりも大きいものを印刷します。ここで試してみることができます


97
Pythを使用する最初の試みが文字Tであることが好きです。
djechlin15年

8
まあ、これは私がしばらく見た中で最も読みやすいPythプログラムだと思っていましたが、これは驚くほど簡単に理解できます。
Deusovi

2
これはポリゴットで、05AB1Eでも機能します。05ab1e.tryitonline.net/#code=VA
魔法のタコ

60

bc、10

A

幸いなことに、bcデフォルトでは最後の式の結果を出力します。 Aは16進数として解釈されるため、結果はになり10ます。


1
しかしA、多くのゴルフ言語はAを10として定義しているため、を含むソリューションを含め、すでに(少なくとも)5つの同様の答えがあります。
nicael15年

45
@nicaelはい、それは本当です。bcゴルフの言語ではないので、この答えは違うと私は言います。実際、Posixで定義された言語であり、標準の* nixシステムでデフォルトで利用できます。
デジタル外傷

47

釣り、スコア7,958,661,109,946,400,884,391,936 1,208,925,819,614,629,174,706,176

これは、最小化の課題で最も重要なスコアです。(ゴルフが84.8%行われたにもかかわらず)

v+CCCCCCCCCC
  `32`nSSSSP

説明

v              Sets the casting direction to down
 +             Increments the casting distance by 1
  CCCCCCCCCC   Casts the rod

`32`         Pushes a string "32" to the stack
    n        Converts the stack from a string to an integer
     SSSS    Repeated squaring of the stack
         P   Prints the stack

番号は32^1625桁です。コードの長さは24バイトです。前の答えはでした6^32


2
私の目に涙をもたらしました。ご協力ありがとうございます。
アランドール

30
おそらくJavaに勝るでしょう...うまくいけば。
アークトゥルス

3
まあ、それは、C#を打つ...
LegionMammal978

なぜ9ではなく6ですか?
イミビス

@immibisチャレンジの目標は、スコアを最小化することです。したがって、単にバイトを最小化することではありません。前に9を置くと、スコアが不必要に増加します。
アークトゥルス

36

MATLAB、1,000,000,000(10 9

オクターブでも動作します

disp(1e9)

エソランに勝るものはありませんが、楽しみのためだけに、これはMATLAB / Octaveでできる最小のことなので、とにかく投稿すると思いました。


18
エソランの回答は、有効ではありますが、つまらないものです。そうでないものを見てうれしい!
アランドール

1
say 1e9ゴルフのスコアを改善したい場合、perl はわずかに短くなります。(このアプローチが機能する小さな整数に近いところはありませんが...)
デロバート

@derobert True。1e1は問題ステートメントを満たし、10のスコア(低いほど良い)を与えます(charが1バイトであると想定)
-dberm22

@ dberm22 10(2文字)は1e1(3文字)
以下です-SuperJedi224

@ SuperJedi224ああ、印刷された数字の桁数ではなく、印刷された数字の大きさがバイトカウントよりも大きくなければならないのでそれを読みました。説明をありがとう。
dberm22

29

TI-84ベーシック、120

5!

ᴇ2愚かなUTF-8の要件を満たしていない場合は、より良いスコアが得られます。(電卓のネイティブのトークン化されたエンコーディングでは2バイトのみですが、UTF-8では4バイトです...)


たぶん何かが足りないかもしれませんが、文字列 "E2"はUTF-8で2バイトしかない…
jbg

11
@ JasperBryant-Greene E同じキャラクターではありません。TI-BASICでは、 科学表記法でEあり、変数です。
SuperJedi224

4
ありがとう:)私はキャラクターが微妙にフルハイトよりも小さいことに気付いたはずです...
jbg

3!得点が上がりませんか?
dberm22

1
@NobodyNada今回は、なんらかの理由で質問がUTF8で得点するように特に言われました。
SuperJedi224

26

C#、スコア10 ^ 72 10 ^ 70 10 ^ 64 10 ^ 63

class A{static void Main(){System.Console.Write($"1{0:D63}");}}

それは1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000です。私が試したと思う...


1
本当に素晴らしい。
アランドール

4
Write(new string('1',70))良くないでしょうか?
リン

1
:あなたは10 ^ 56にそれを短縮し、ダブルではなく文字列としてそれを書くことができますclass A{static void Main(){System.Console.Write(1e56);}}
goric

@goricそれは単に出力します1E+56
LegionMammal978


17

JavaScript、スコア100,000,000,000(または1 * 10 11

alert(1e11)

これはアラートを使用する場合です。コンソールを使用すると、100,000倍低いスコアを取得できますが:

1e3

あなたが見ることができるように1000点をつけてください、しかし、私はそれがコンソールを使って数えるかどうかわかりません。


なぜカウントされないのか分かりません!
アランドール

6
@Arandur「私はそれがカウントされるかどうかわからない」とは、1000の低いスコアを指していると推測しています。
trichoplax

@triが正確に説明されました。
ニカエル

11
アラートの+1、自動コンソール出力を許可しません
edc65

17

PlatyPar、59

#

#数値ベース60リテラルを開始し、数字が見つからないため、最終的にはになります59。これは幸せな事故として始まりましたが、別の回答でこのバグをすでに使用しているので、それを保持しました。

オンラインでお試しください

ここに別のアプローチがあります。誰もが彼らの祖母がこの挑戦に使用した退屈な方法についての私の見解です。

PlatyPar、100000000(9桁)

'18Md0+;

説明

'1        ## push "1" (a string) to the stack
  8Md  ;  ## repeat 8 times
     0+    ## add a 0
          ## [implicitly] print the result

オンラインでお試しください


16

Brainf ** k、11111111111111111111111111111111111(〜1e34)

そして別の削減:

+++++++[>+++++++>+<<-]>>[<.....>-]

これは、35の連続した1、つまり約1e34を与えます。


まだ少し小さい

++++++++[>++++++>+<<-]>+>+[<....>-]

36の1を与えます。これは、1e35よりも約11%大きい数値です。


このコードで合計出力を100分の1に減らした2、3の文字をノックオフしてくれた@MartinBüttnerに感謝します(1e36が得られます)。

++++++[>++++++++>++<<-]>+.->[<...>-]

私の古いコード(1 + e38を生成):

++++++++[>++++++>++<<-]>+.->+++[<..>-]

私は退屈からエソランで実験してきました。これは、BFでできる最善の方法です。小さくすることは可能だろうか?

こちらからオンライン試すことができます


私は最初から短い答えを書いた:リンク
Lynn

@Mauris印象的!
トムカーペンター

16

C、1000000000000000000000000000(28桁)

main(){printf("1%027d",0);}

私のC ++の答えに似ていますが、#include <stdio.h> (の宣言の欠落に関する警告を無視しますprintf。ありがとう@Dennis)

改行には、フォーマットを使用して追加の2バイトが必要です。 1%029d\n


14

Japt、スコア10

A

スコアを示すように、10を印刷します。


これはコードゴルフではありません。目標は最小の数字を印刷することです。スコアは10です。
pppery15年

@ppp「数値はプログラムよりもバイト単位で長くなければなりません-コードが文字を持っているよりも多くの桁を持っている必要があります」-OPが編集されました。
ニカエル

2
あなたは誤解していません。JAPTプログラムがあればA10を印刷し、これは10のスコアが有効なプログラムです
Arandur

3
ウーフー、私の言語は<s> 1番目</ s>の2位に結びついています 網膜の
まぶしさ

4
downvoteの理由は?
ニカエル



9

ラビリンス、スコア10,000,000

1!!!!>@

これを1桁下げることは可能かもしれませんが、今のところ何も見つかりません。

最初の1!!!!印刷物1000。次に>、ソースコードを

@1!!!!>

これにより、早期終了が回避されます。その後、IPは行き止まりになり、向きを変えます。今、!!!!さらに4つのゼロを出力し、@プログラムを終了します。

オンラインでお試しください。


9

サマウ、42

A

A生命、宇宙、すべての究極の質問に対する答えをスタックにプッシュします。その後、スタックの上部が自動的に印刷されます。


P:私は、何かがあなたのコミットメッセージと間違っていると思う
ドアノブ

3
@Doorknob冰コミットメッセージの書き方がわからないので、ランダムな絵文字を使用します。
-alephalpha

5
わかりました、ここに本当の質問があります:Qプッシュは何ですか?
チョイス

9

Brainfuck、3333333333333333333333333(スリー25)

これは「ゼロから」書かれているので、別の回答を投稿しても大丈夫だと思います。

-[>+>+<<-----]>-[-->.<]

長さ23バイト。


bfソリューションを検討していましたが、数値としてのみ出力する現在のインタープリターはありますか?
ローハンジュンジュンワラ

@RohanJhunjhunwalaは、51(のASCIIコード"3")を25回出力します。
レベルリバーセント

( - )@LevelRiverSt何イムのことわざは、ASCIIと入力しないBFインタプリタが存在するかもしれないということであり、唯一のため、整数出力を行うだろう出力255
ロハンJhunjhunwala

9

DC、10000

4文字のプログラム:

I4^f

5桁の出力:

$ dc<<<'I4^f'
10000

3
+1。うん、それはDCで最適だと思う。異常にbcは短いです。
デジタル外傷

私はうまくやっていたと思いました6d^p(46656をもたらす)、しかしあなたはそのビートを持っています-よくやった!
トビースパイト


8

C、11111111111111111111111111111111111111(35個)

main(c){while(c++<36)putchar(49);}

おそらくもっと短い方法があります。Cで大きな数字を印刷する簡単な方法がないため、注意が必要です。



7

Java、111111111111111111111111111111111111111111111111111111111111111111111111111111111(81個)

interface A{static void main(String[]a){for(A i:new A[81])System.out.print(1);}}
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ここで実際に「変数」である部分に下線を付けました。動作するJavaプログラムには他のすべてが絶対に必要です。

おそらくこれはJavaをいじくり回すよりも短いでしょうBigInteger


おそらく...-おそらくSystem.out.print(BigInteger.TEN.pow(10));-それは1文字少ないですか?申し訳ありませんが、十分な大きさで.pow(10).pow(10)はありません。
OldCurmudgeon

あなたは置き換えることができinterfaceclass
LegionMammal978

2
しかし、その後mainする必要がありますpublic
リン

7
forループに対してこれを行うことにより、2文字を削減できます。for(A a:new A [81])
ジャックの弾薬

@OldCurmudgeon .pow(100)何らかの理由で動作しませんか?
ETHproductions

7

キュービックス、100100

@'dOu

Cubixは、2次元のスタックベースのエソランです。Cubixは、ソースコードがキューブの外側を囲むという点で、他の2D言語とは異なります。

オンラインでテストしてください!

説明

インタプリタが最初に行うことは、コードが適合する最小のキューブを見つけ出すことです。この場合、エッジの長さは1です。その後、.6つの辺がすべて埋められるまで、コードには何も実行されません。空白は処理前に削除されるため、このコードは上記と同じです。

  @
' d O u
  .

これでコードが実行されます。IP(指示ポインター)は、左端の面から始まり、東を指します。

IPが最初に遭遇する文字は'で、次のバイトをスタックにプッシュします。このバイトはd、または100です。次はO、整数として最上位項目(100)を出力します。

次に、IPがヒットuし、右に曲がり、前方に移動してから再び曲がります。北を指す底面に切り替わり、次に東に回転します。これはO再び100を出力し、それまで@はプログラムを終了します。




6

Python 2、107918163081

print 69**6

printとの間のスペースを削除でき2ます。
バクリウ

1
@Bakuriuいいえ、できません
ブルー

69**6のみ107918163081です。
ニール

2
興味深いことに、これはPerlでも機能します。
グリミー

6

C ++、1e46

#include <stdio.h>
main(){printf("1%046d",0);}

改行には、フォーマット「1%048d \ n」を使用して、追加の2バイトが必要です。


C ++では、の戻り値の型を省略することはできませんmain()。OTOH、これは...良いCの答えになるだろう
トビースパイツ


5

05AB1E、スコア10

コード

T

説明:

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