eの最初のN桁を計算します


13

チャレンジ

eの最初のN(<= 10 ^ 3)桁を計算するプログラムを作成します。

プログラムは入力として整数Nを取る必要があります。

入力:

100

出力:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

入力:

7

出力:

2.718282

入力:

1000

出力:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035

最短のソリューションが勝ちます!

回答:


8

Mathematica(12バイト)

N[E,Input[]]

あなたは、オンラインでそれを試すことができますがありe-digitsyubnub.org例えば、上のコマンドyubnub.org/parser/parse?command=e-digits+1000用途がwolframalphaことwolframalpha.com/input/...
JFS

1
-1は、自分で計算を実装しないためです。
-FUZxxl

2
@FUZxxl:作成者は実装を要求しませんでした。最短のもののみが優先されます。
キクソティック

7
@Quixotic質問は単に出力ではなく「計算」と言います。質問が「計算する」の代わりに「計算する」と言っていた場合、あなたは同じことを主張したでしょうか?
nitro2k01 14

7

Python、69

e = f = n = 1; N = input()+ 2; exec "e + = 10 ** N / f; f * = n; n + = 1;" * N; print'2。 '+ `e` [ 1:-4]

eの標準べき級数のN + 2反復を計算します。


6

J、20 ...

計算的ですが...非常に非効率的です。nが定義されている(20):

(0 j.<:n)":+/%!i.x:n+9

モナド関数として(32):

ge =. 3 : '(0 j.<:y)":+/%!i.x:y+9'

暗黙の関数として(33、修正済み):

(0 j.<:)":(+/)&:(%&!&i.&x:&(9&+))

これは非常に高速に収束するため(100桁の場合は「ちょうど」70個の用語が必要です)、それを削除できます+9
エルベックス

1000桁の場合、これに(0 j.<:1000)":+/%!i.x:450は数秒しかかかりません。
エルベックス

コードを説明してもよろしいですか?
aaaaaaaaaaaa

@Eelvex:ただし、N = 30程度になるまで追加の用語が必要です。(作曲の混乱を減らすヒントはありますか、それとも適切ですか?)
ジェシーミリカン

ああ、あなたは正しい、それは残念です。(その「混乱」は、私が思いつく他のどんなものよりも短い-もちろん、あなたがiに固定番号を使用しない限り:(0 j.<:n)":+/%!i.999x;そして暗黙のうちに:(+/%!i.999x)":~0 j.<:
Eelvex

5

Python、67

import decimal as d
d.getcontext().prec=input()
print d._One.exp()

3文字節約しますか?from decimal import*両方を削除しますd.
ティムテック14

@Timtech import *_One、アンダースコアが先行するためインポートしません。
jfs

わかりませんでした、申し訳ありません/
-Timtech

3

05AB1E、4 3 2バイト

取り消し線4は、まだ通常の4です;(

@Adnanに感謝します。

žt

用途 CP-1252エンコードをます。

説明:

žt - Push input. Pop a, push e to a places (up to 10000).

更新:

スタックに何もない場合はとにかく入力を取得するためI、削除žtします。


1
このチャレンジが投稿されてから約4年半後に05AB1Eが作成されたため、これを非競合としてマークしました。
メゴ

@Mego OK、次回はそれを忘れないでください。
ジョージギブソン

1
プログラミングパズルとコードゴルフへようこそ!ž文字は1バイトCP-1252 P:これは代わりに3の2バイトの合計スコアを有しているので、符号化。
アドナン

@Adnanありがとう!素敵な言語、ところで。
ジョージギブソン

@GeorgeGibsonありがとうございます!:)
アドナン

2

ルビー、68

require 'bigdecimal/math';include BigMath;puts E(gets.to_i).to_s 'F'

ruby1.8では動作しません。それはruby1.9に無効な結果を生成します
JFS

あなたは正しいですが、Ruby 1.9で動作するはずです。E関数の精度に問題があるようです。
david4dev

ここでは問題なく見えますが、不正確な数字を追加するだけです。メイビーはこんな感じ?require'bigdecimal / math '; puts BigMath :: E(a = gets.to_i).to_s(?F)[0、a + 1]
steenslag

1

GolfScript 43 41

~10\?1:b 461,{)b*:b@+\}460*;*b/`);(;'2.'\

編集:0を初期化bの残り1で置き換えることもできます。結果の差は出力にするには小さすぎます。

以下に文書化したとおり、古いバージョンを残しました。

~10\?1:b;0 461,{)b*:b@+\}460*;*b/`);(;'2.'\

~10\?入力を取得して10 ^ inputを計算し、結果をスタックに残します。
1:b;bに1を保存します。
0 461,スタックに0を配置し、スタック[0 1 ... 459 460]をスタックに配置します。
{ }460*関数を460回実行します。
)b*:b配列の最後の要素を取得し、bで乗算し、結果をbに格納して、結果をスタックに残します。
@+\0(最初の反復ではゼロのみ)をスタックの一番上に切り替え、残りのb値に追加し、結果を再び切り替えます。
;配列の残りを削除します([0]のみが残ります)。
0に初期化された番号は、値e * 460を保持するようになりました!そしてbは460を保持します!
*10 * inputにe * 460を掛けます!(この時点でスタックに残っている要素は2つだけです)。
b/結果をbで割ります。
スタックは値e * 10 ^ inputを保持するようになり、文字列に変換されると、ドットではなくすべての小数が保持されます。
`);(;'2.'\ドットに収まる一連の文字列操作。

e * 460!1 + 460 + 460 * 459 + 460 * 459 * 458などとして計算されます。



0

J、17

(":&(x:^1)@*&0j1)

例:

(":&(x:^1)@*&0j1) 50
2.71828182845891281655718620537435347047040502245993

指数動詞に組み込まれた使用法-そのため、「計算」は不安定な根拠に基づいています。基本的に:

^1 - computes e**1
x: - does extended precision
0jy ": - formats the number to y digit

*&0j1単純ですj.
-FrownyFrog

0

GTB、14

eS?`AS;_,1,A+1

説明

e- e最後に計算された値として入力

S?- e文字列に変換_

`A -入力A

S;_,1,A+1の最初のA桁を表示しますe


0

Mathcad、[tbd]バイト

enter image description here

スピゴットアルゴリズムを使用します- http://comjnl.oxfordjournals.org/content/11/2/229.full.pdf+html


Mathcadのバイトカウントの等価性はまだ決定されていないため、バイトカウントは指定されていません。ただし、シンボルの等価性を使用すると、約121バイトになります。また、等価性がどのように決定されても、簡潔な賞品は獲得できません。



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