Calcule os primeiros N dígitos de e


13

Desafio

Escreva um programa para calcular os primeiros N dígitos (<= 10 ^ 3) de e .

Seu programa deve usar um número inteiro N como entrada.

Entrada:

100

Resultado:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

Entrada:

7

Resultado:

2.718282

Entrada:

1000

Resultado:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035

A solução mais curta vence!

Respostas:


8

Mathematica (12 bytes)

N[E,Input[]]

Você pode experimentá-lo on-line: existe um e-digitscomando no yubnub.org, por exemplo, yubnub.org/parser/parse?command=e-digits+1000 que usa wolframalpha wolframalpha.com/input/…
jfs

1
-1 porque você não implementa o cálculo por si próprio.
FUZxxl 14/03/11

2
@FUZxxl: O autor não pediu uma implementação, apenas as mais curtas são preferidas.
Quixotic

7
@ Quixotic A pergunta diz "computação" e não apenas saída. Você teria discutido a mesma coisa se a pergunta dissesse "calcular" em vez de "calcular"?
Nitro2k01 02/02

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]

Calcula iterações N + 2 da série de potência padrão para e.


6

J, 20 ... ish.

Computacional, mas ... Muito ineficiente. Com n definido (20):

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

Como função monádica (32):

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

Como uma função tácita (33, fixa):

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

Isso converge muito rápido (para 100 dígitos, você precisa "apenas" 70 termos), para que você possa descartá-lo +9.
Eelvex 13/03/11

Para 1000 dígitos, isso: (0 j.<:1000)":+/%!i.x:450leva apenas alguns segundos.
Eelvex

Você gostaria de explicar seu código?
Aaaaaaaaaaaa

@Eelvex: Mas eu preciso de termos extras até N = 30 ou mais. (Alguma dica sobre a redução que bagunça de compõe, ou é que sobre a direita?)
Jesse Millikan

Ah, você está certo, isso é lamentável. (Essa "bagunça" é mais curto do que qualquer outra coisa que eu poderia vir acima com - a menos, claro, você usa um número fixo para que eu gosto:. (0 j.<:n)":+/%!i.999x; Em seguida, tacitamente: (+/%!i.999x)":~0 j.<:)
Eelvex

5

Python, 67

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

Salvar 3 caracteres? from decimal import*e remova ambosd.
Timtech 02/02

A @Timtech import *não será importada _Onedevido ao sublinhado principal.
JFS

Ok, não sabia que, desculpe /
Timtech

3

05AB1E, 4 3 2 bytes

O riscado 4 ainda é regular 4;

Obrigado a @Adnan por um byte.

žt

Usa a codificação CP-1252 .

Explicação:

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

Atualizar:

Remova I, pois žtrecebe a entrada de qualquer maneira, se não houver nenhuma na pilha.


1
Marquei isso como não concorrente porque o 05AB1E foi criado cerca de 4 anos e meio após o lançamento deste desafio.
Mego

@ Megego OK, eu vou lembrar de fazer isso na próxima vez.
George Gibson

1
Bem-vindo à Programação de Puzzles e Code Golf! O žcaractere tem 1 byte na codificação CP-1252 , portanto, isso tem uma pontuação total de 2 bytes em vez de 3: p.
Adnan

@Adnan Thanks! Linguagem agradável, btw.
George Gibson

@GeorgeGibson Thank you! :)
Adnan

2

Ruby, 68

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

não funciona no ruby1.8. Produz resultados inválidos em ruby1.9
jfs

Você está certo, mas deve funcionar no Ruby 1.9. Parece haver algo errado com a precisão na função E.
David4dev 13/03

Parece bom aqui, apenas adiciona alguns dígitos imprecisos. Mayby gosta disso? require'bigdecimal / matemática '; coloca 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.'\

Edit: Eu também poderia substituir o 0 pelo resto 1 da inicialização b, a diferença resultante é muito pequena para chegar à saída.

Deixei a versão antiga, pois é isso que documentei abaixo.

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

~10\?Tome entrada e calcule 10 ^ entrada, deixe o resultado na pilha.
1:b;Armazene 1 em b.
0 461,Coloque 0 na pilha, coloque a matriz [0 1 ... 459 460] na pilha.
{ }460*Execute a função 460 vezes.
)b*:bPegue o último elemento da matriz, multiplique-o por b, armazene o resultado em be deixe o resultado na pilha.
@+\Alterne o 0 (que é apenas um zero na primeira iteração) para o topo da pilha, adicione-o ao valor restante de b e alterne o resultado novamente.
;Remova o restante da matriz (apenas [0] resta).
O número que foi inicializado como 0 agora mantém o valor e * 460! eb segure 460!
*Multiplique 10 ^ de entrada por e * 460! (neste momento, são os únicos 2 elementos restantes na pilha).
b/Divida o resultado por b.
A pilha agora mantém o valor e * 10 ^ input que, quando convertido em uma string, retém todos os decimais, mas não o ponto.
`);(;'2.'\Um monte de operações de string para caber no ponto.

e * 460! é calculado como 1 + 460 + 460 * 459 + 460 * 459 * 458 etc.



0

J, 17

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

Exemplo:

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

Usos construídos no verbo exponencial - assim, "computar" é por motivos instáveis. Basicamente:

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

*&0j1é simplesmentej.
FrownyFrog

0

GTB , 14

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

Explicação

e - Colocar e como o último valor calculado

S? - Converter e em string_

`A - Entrada A

S;_,1,A+1Exibe os primeiros Adígitos dee


0

Mathcad, [tbd] bytes

insira a descrição da imagem aqui

Usa um algoritmo de torneira - http://comjnl.oxfordjournals.org/content/11/2/229.full.pdf+html .


A contagem de bytes não fornecida como equivalência da contagem de bytes do Mathcad ainda está para ser determinada. No entanto, usando uma equivalência de símbolo, são aproximadamente 121 bytes ... e não ganhará nenhum prêmio de concisão, não importa como a equivalência seja determinada.


0

Mathematica, 7 bytes

N[E,#]&

Minha resposta é mais um golfe desta resposta.

Experimente online!

Por alguma razão, a saída do TIO parece engraçada, mas eu testei na minha máquina e o código funciona muito bem.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.