超越的な数のゴルフ


46

定義

  • 代数的数とは、整数係数を持つ非ゼロ多項式のゼロである数です。たとえば、の平方根2はのゼロであるため、代数的ですx^2 - 2
  • 超越数は代数ではない実数です。

仕事

超越番号を選択する必要があります。

その後、正の整数取るプログラム/機能書くnと出力をn番目の小数選択した超越数の小数点以下の桁を。提出する際には、どの超越番号が使用されているかを明記してください。

0インデックスまたは1インデックスを使用できます。

e^2=7.389056098...超越数です。この番号の場合:

n output
1 3
2 8
3 9
4 0
5 5
6 6
7 0
8 9
9 8
...

イニシャル7は無視されることに注意してください。

上記で述べたように、他の超越番号を選択できます。

得点

これはです。バイト単位の最低スコアが勝ちです。


さまざまな答えは、引数として使用できる整数の有限数があるという事実をどのように処理しますか?超越数は、その最初のmaxInteger桁である0が存在するので、0は、許容可能な答えであろう
WNG

1
@WNG言語には任意の精度があります。maxintegerはありません。
リーキー修道女

1
@WNG入力インデックスは、任意の大きな数値型を持たない言語では、整数ではなく文字列と考えることができます。
isaacg

回答:


112

Python、3バイト

min

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

数値文字列を取り、その最小桁を最小文字として出力します。たとえば、254を与え2ます。これらの数字で始まる小数

0.0123456789011111111101222222220123333333012344444401234555550123456666012345678801234567

これはOEIS A054054です。

申し立て:この番号cは超越的です

証明:c非常にまばら であることに注意してください:ほとんどすべての数字がゼロです。これは、large nnゼロ桁である可能性が高く、最小桁がゼロになるためです。さらに、c連続したゼロの長い実行があります。これcは超越的であることを示す既存の結果を使用します。

このmath.SEの質問に続いてZ(k)、のk'ゼロ番目以外の桁の位置を表しc、とのc_k間の整数であるゼロ以外の桁1とし9ます。その後、我々はの小数展開を表現するcが、唯一のオーバー和としてとして、ゼロ以外の数字を取るk=1,2,3,...c_k/10^Z(k)

George Lowtherによるこの回答のポイント4の結果を使用しますc。これは、これまでに桁数の少なくとも一定の割合であるゼロの実行が無限に多い場合、超越的です。正式には、ε>0そのようZ(k+1)/Z(k) > 1+εに無限に多く存在する必要がありますk。使用しますε=1/9

桁の任意の数のためにd、取るkZ(k) = 99...99してd華やかに。このようなa kは、この数字がでcあり、9ゼロ以外であるために存在します。からカウントアップすると99...99、これらの数値はすべてゼロ桁を含むため、でゼロの長い実行の開始をマークしcます。次の非ゼロの数字はまでではないZ(k+1) = 1111...11d+1するもの。比率はZ(k+1)/Z(k)わずかに超えてい1+1/9ます。

これは、すべての条件を満たし、d結果を意味します。


私はその証拠を見て非常に興奮しています。
リーキー修道女

1
これは許可されていますか?minそれ自体は入力を受け取らず、出力も提供しません。これは質問の要件のようです。もちろん、それは全体として重要な機能ですが、「オンラインで試す」で明らかなジェネレーターと印刷ステートメントなしでは何もしません。
マスト

6
@Mastはい、問題は10進数を生成するのではなく、nが与えられたn番目の桁を出力することです。テストコードは、数字のシーケンスを表示することです。また、関数リテラルを含む関数に評価される式は、有効な関数送信です。
xnor

1
楽しい:)))
Noodle9

38

Pyth、1バイト

h

入力と出力は文字列です。関数は、インデックスの最初の数字を取得します。結果の超越数は次のようになります。

0.0123456789111111111122222222223 ...

これは1/9、少なくとも一定の長さのゼロの長さのストレッチを持つプラスの数であるため、超越的です。このmath.stackexchange answerに基づいて、それは数が超越的であることを意味します。

ゼロからのストレッチがあり、数字100 ... 000から199 ... 999であるため、Z(k+1)toの比はZ(k)無限に2になることがあります。

したがって、上記の数字のマイナス1/9は超越的であるため、上記の数字は超越的です。


1
リンクされたM.SEの投稿で尋ねられ質問はこの番号には適用されませんが、ジョージローサーによる回答のポイント4は適用されます。
ヘニングマクホルム

16

Python 2、19バイト

lambda n:1>>(n&~-n)

N 番目の桁である1ならば、Nの力であり、20そうでありません。

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


3
私はこれに答えようとしていましたが、その超越性の証拠は見つかりませんでした。この数字が超越していると思われる理由は何ですか?n&~-n>0ところで短いです。
-orlp



@orlpブール値が適切かどうかをOPに尋ねる必要があります。
デニス


11

brainfuck、2バイト

,.

他のいくつかの回答と同様に、最初の10進数を返し、残りを無視します。



5

網膜、4バイト

1!`.

入力番号の最​​初の桁を返します。そのポートはとても退屈だったので、ここにいくつかのポートがあります:

O`.
1!`.

(8バイト)入力番号の最​​小桁を返します。

.+
$*
+`^(11)+$
$#1$*
^1$

(25バイト)入力数が2の累乗の場合、1を返します。

.+
$*_

$.`
+1`.(\d*)_
$1
1!`.

(30バイト)Champernowneの定数。


4

Brachylog 2、7バイト

⟦₁c;?∋₎

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

Champernowne定数の桁を計算します(インデックスの問題により、おそらく10の累乗の倍数になりますが、ここでは明らかに重要ではありません)。基本的に、これは整数を連結するだけで、n番目の桁を取ります。


なぜ必要⟦₁ですか?
リーキー修道女

@LeakyNun:それ以外の場合は、数字を0で連結し始めます。数字ではないので、それを行うこと0123はできません(数字が何であるかというBrachylogの概念に適合しない先行ゼロがあります)。

4

Python 2、13バイト

入力と出力は文字列です。

lambda n:n[0]

数値のn番目の桁は、10進数で記述された場合のnの最上位桁です。


4
この数が超越的な理由を含める必要があります。
-orlp

2
@orlpは、xnorの参照をここでも簡単に適用できるように見えます-数値から1/9を減算し、Z(n + 1)/ Z(n)〜= 2を無限に頻繁に(10 ^ xと2 * 10 ^ xの間で) )。
-feersum

4

MATL、7バイト

4YA50<A

これは、ここで指定された2つの数値の最初の値を3 割ったものを使用します(超越維持します)。

1.100110000000000110011 ...

入力は1ベースです。 オンラインでお試しください!または、最初の20の小数を参照してください

説明

4YA     % Convert to base 4 using chars '0', '1', '2', '3' as digits
50<A    % Are all digits less than '2'? Gives 0 (false) or 1 (true) 

3

JavaScript、51バイト

この関数nは、シャンペルノーン定数のth桁を計算します。f=最初に追加して、のように呼び出しf(arg)ます。nは1から始まることに注意してください。

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

説明

この関数は単一の引数を取りますn。次に、n反復1の-characters長いストリングを作成します。次に、その文字列を1の配列に分割します。その後、配列のすべての要素を反復処理し、配列内のインデックスを1ずつ増やして乗算します。次に、配列を""(空の文字列)に結合して文字列を形成します。最後nに、取得した文字列のth番目の要素を返します。

注: 返される値の型は常にStringです。

テストスニペット

let f =

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

i.oninput = e => o.innerHTML = f(parseInt(e.target.value,10));
<input id=i><pre id=o></pre>


3

Python 2、43バイト

シャンペルノーンの定数。

lambda n:"".join(`i`for i in range(n+1))[n]

なぜ必要n+1ですか?
リーキー修道女

@LeakyNunそれ以外の場合、n <= 1のインデックスエラーが発生するため
–orlp

1インデックスを使用できます。
リーキー修道女

@LeakyNun n <=1。
orlp17年

これにはPython 2を指定する必要があると思います。
numbermaniac

3

APL(Dyalog)、3バイト

2|⍴

オンラインでお試しください!(テストスイートはから1までの範囲の数値を生成し10000、それらを文字列に変換してから、それらに列車2|⍴を適用します)。

入力数を文字列として受け取り、その長さmod 2を返します。したがって、123=> 3 mod 2=> 1です。

シーケンスは次のように始まります。

1  1  1  1  1  1  1  1  1  0  0  0  0  0  0  ...

したがって、これは次のように一般化できます。 9 1s 90 0s 900 1s ...

この数に9を掛けると、Liouville数が得られます。これは、超越的であることが証明されています。


これは必ずしもLiouvilleの数字だとは思わない-n> 10を得ることができるかどうかは私には明らかではない。それはありませんけれども、ここで他の人が使用してきた強力な定理をフィット。
Ørjanヨハンセン

@ØrjanJohansenとして表現できる1 - 10^-9 + 10^-99 - 10^-999 + 10^-9999 - 10^-99999 + ...ので、これはリウヴィル数です。
リーキー修道女

@LeakyNun連続する指数の割合は約10ですが、Wikipediaの定義に合わせるために、無制限にする必要があります。これが、元のLiouvilleの定数の1指数が指数ではなく階乗を使用する理由です。
Ørjanヨハンセン

3

Haskell、25バイト 17バイト

(!!)$concat$map show[1..]

C10 * .01は依然として超越的であるため、Champernowneの定数には0または1のインデックスを付けることができます。

編集:nimisコメントに従って、リストモナドを使用してこれを減らすことができます

(!!)$show=<<[1..]

2
=<<リストモナドからconcat.map(!!)$show=<<[1..]
nimi

2

JavaScript、73バイト

これは、計算プログラムであるnリウヴィル定数の桁目nの入力数は、関数を呼び出すことによって与えられるgようなg(arg)(およびn1-インデックスされる)を。コード内の改行が必要であることに注意してください。

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

説明

プログラムは2つの関数、fおよびで構成されていgます。f再帰的階乗計算関数でありg、プログラムの主要な関数です。g 1つの引数を持っていると仮定しますn。デフォルトの引数rを値0で定義します。次に、0からのすべての整数を反復処理しn、各反復で、f適用される関数i(現在のインデックス)が等しいnかどうか、つまりn階乗かどうかをチェックしますi。その場合、r値は1に設定されます。関数の最後に、rが返されます。

テスト用スニペット

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

i.oninput = e => o.innerHTML = g(parseInt(e.target.value,10))
<input id=i><pre id=o></pre>

警告: スニペットの入力ボックスに非常に大きな値を入力しないでください!そうしないと、デバイスがフリーズする可能性があります!


1

Pyth、7 5 4バイト

@jkS

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

Champernowneの定数を使用します。

Leaky Nunのおかげで2 3バイト節約されました。


1
あなたがjk置き換えるためsm`dに使用することができます、私は信じています。
リーキー修道女

1
S代わりに使用できますUhか?
リーキー修道女

機能的には同じだと思うので、はい。私は完全にドキュメントを読みます>。>
拍手

機能的に同一ではありません。Sで始まり、1U始まり0ます。
リーキー修道女

編集を元に戻したのはなぜですか?結果の数は依然として超越しています。
リーキー修道女



1

、24バイト(非競合)

NαAIUVN⟦UGPi⁺α¹⟧β§β⁺α›α⁰

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

注:ポストタイムの時点nnは、14の正の倍数のところで 機能しません。

説明

Nα                             Input number to a
   A                  β        Assign to b
     I                         Cast
       UVN                    Evaluate variable N
            ⟦UGPi⁺α¹⟧         With arguments GetVariable(Pi) and a+1
                        §β⁺α›α⁰ Print b[a+(a>0)]

GetVariable(Pi)?だから、π事前定義された変数はありませんか?
ニール

まだ@Neil、と私は作るつもりはないよπ、これはASCII-芸術指向言語ではなく、数学指向の一つですので、Piに等しい
ASCIIのみ

1

Japt3 1 + 1 = 2 1バイト

feersumのソリューションの別のポート。

入力を文字列として受け取ります。

g

オンラインで試す


説明

   :Implicit input of string U
g  :The first character of the string

入力は文字列にすることができるためg、1バイトで実行できます:)
オリバー

このチャレンジでは、文字列入力@obarakonについては言及されていないため、JSポートで整数を使用し、次にここで使用しました。
シャギー

ああ、落とした。他の多くの回答では、文字列入力が使用されました。しかし、あなたは正しいです、OPはチャレンジでそれを言及しませんでした。
オリバー

1

TI-BASIC、16バイト

基本的に、入力N(1-indexed)が三角形の数であるかどうかをテストします。これは、超越的であることN証明されている、0.1010010001…のth桁目を返すのと同じです。数字のシーケンスはOEIS A010054です。

Input N
int(√(2N
2N=Ans(Ans+1


0

JavaScript(ES6)

他のソリューションのいくつかのポート


feersumのPythonソリューション、12バイト

n=>(""+n)[0]


デニスのPythonソリューション、13バイト

n=>1>>(n&--n)


xnorのPythonソリューション、20バイト

n=>Math.min(...""+n)



0

05AB1E3 1バイト

編集:他の回答からの証明を使用して、入力の最初の数字を返します

¬

πの1インデックス(最大100000桁のみ)

žs¤

使い方

žs  # Implicit input. Gets n digits of pi (including 3 before decimal)
  ¤ # Get last digit

または、e(まだ1から始まる)を希望する場合(最大10000桁のみ)

žt¤

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


0

J、2バイト

誰もが使用している同じソリューション:

{.

nの最初の桁を返します。IOは文字列上にあります

リウヴィルの定数、9バイト

(=<.)!inv

1入力が整数の階乗かどうかを返します。

Pi、13バイト

{:":<.@o.10x^

pi×10 ^ nの最後の10進数以外の数字。





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