Todos sabemos que el número de Euler , denotado por e, a la potencia de alguna variable x, puede aproximarse usando la expansión de la serie Maclaurin :
Al dejar que x sea igual a 1, obtenemos
Desafío
Escriba un programa en cualquier idioma que se aproxime al número de Euler tomando una entrada N y calcule la serie al término N-ésimo. Tenga en cuenta que el primer término tiene el denominador 0 !, no 1 !, es decir, N = 1 corresponde a 1/0 !.
Puntuación
Programa con la menor cantidad de bytes gana.
code-golf
math
number
approximation
Mezcla Miau
fuente
fuente
N
los resultados serán los mismos si se usa un número de coma flotante de precisión finita. ¿Es aceptable ese comportamiento o el resultado tiene que ser progresivamente más preciso a medida que seN
acerca al infinito?Respuestas:
Jalea , 5 bytes
Pruébalo en línea!
Cómo funciona
fuente
Ḷ
, lo que hace un rango [0, n) . ^ v ^;Wistful-C - 336 bytes
¡Mi primer programa melancólico! En realidad, hice un poco de golf, con el uso en
someday
lugar dewait for
porque el primero tenía una longitud más corta.fuente
<stdio.h>
someday i were N...
Funciona en lugar desomeday i will be N...
?Pyth,
76 bytesPruébalo aquí
¡Gracias a FryAmTheEggman por un byte!
fuente
TI-84 BÁSICO,
121514TI es un lenguaje tokenizado (los bytes se cuentan mediante tokens , no caracteres individuales).
fuente
Ans
no es un formato de entrada válido, por lo que solo la versión de 15 bytes es válida.Ans
siempre ha sido el formato de entrada predeterminado aquí en PPCG (consulte mis antiguas respuestas de TI), y más personas están de acuerdo que en desacuerdo con eso, así que no se deje intimidar por cambiar su respuesta.Julia,
282721 bytesEsta es una función anónima que acepta un entero y devuelve un flotante. Para llamarlo, asígnelo a una variable.
El enfoque es bastante sencillo. Nos
sum
1 dividido por la función gamma evaluado en cada uno de 1 a n . Esto aprovecha la propiedad n ! = Γ ( n +1).Pruébalo en línea!
¡Ahorré 1 byte gracias a Dennis y 6 gracias a Glen O!
fuente
@(n)sum(1./factorial(0:n))
Python, 36 bytes
Python 2:
Python 3:
fuente
or
lugar deand
:f=lambda n,i=1:i>=n or 1+f(n,i+1)/i
.cc, 43 bytes
Esta es una traducción bastante directa de la serie. Traté de ser más inteligente, pero eso resultó en un código más largo.
Explicación
Una función factorial simple, para n> 0
Ejecute el factorial para n, ..., 1; invertir y sumar
Prepara la pila con 1; aceptar entrada y establecer una precisión adecuada
Si la entrada fue 0 o 1, podemos pasarla, de lo contrario, calcular la suma parcial.
Imprime el resultado.
Resultados de la prueba
Las primeras 100 expansiones:
Usando 1000 términos:
fuente
J, 10 bytes
Enfoque directo.
Explicación
fuente
1#.%@!@i.
CJam, 11
o
Pruébelo en línea: primera versión y segunda versión
Explicación:
r~
= leer y evaluarm!
= factorialW#
= elevar a la potencia -1 (W
= -1):+
= suma de la matriz Laprimera versión construye la matriz [0 ... N-1] y aplica factorial e inverso a todos sus elementos; La segunda versión hace factorial e inverso para cada número y luego los coloca en una matriz.
fuente
JavaScript ES6,
44 4240Una función sin nombre ahora.
¡Gracias por guardar 2 bytes @AlexA y gracias a @LeakyNun por otros 2 bytes!
fuente
n=>{for(k=s=m=1;m<n;s+=k/=m++);return s}
MATL,
117 bytes4 bytes guardados gracias a la recomendación de @ Luis de usar
gamma
(Yg
)Pruébalo en línea
Explicación
fuente
]
1i:Yg/s
para 7 bytesMATL , 6 bytes
Esto calcula la suma usando el función hipergeométrica 1 F 1 ( a ; b ; z ):
Funciona en Octave y en el compilador en línea, pero no en Matlab, debido a una diferencia en cómo se define la función hipergeométrica (que se corregirá).
Pruébalo en línea!
Explicación
fuente
C, 249 bytes
Sin golf:
Toma un número como argumento para determinar el número de iteraciones.
fuente
int
antesmain
y elreturn 0
. Además, si reemplazaNULL
con0
, no necesita las inclusiones.argc
yargv
se puede acortar a variables de una letra. Si le gusta jugar golf en C, puede encontrar consejos útiles para jugar golf en C.#include <stdio.h>
k (13 bytes)
Sujeto a desbordamientos por
N>20
fuente
05AB1E, 6 bytes
Explicado
Pruébalo en línea
fuente
L<!zO
.Pyke, 10 bytes
Pruébalo aquí!
O 8 bytes si potencia = 1
Pruébalo aquí!
fuente
JavaScript (ES6), 28 bytes
fuente
Dyalog APL , 6 bytes
+/
suma de÷
los recíprocos de!
los factoriales de⍳
los números de 0 a⎕
entrada numéricaAsume
⎕IO←0
, lo cual es predeterminado en muchos sistemas.TryAPL !
fuente
Haskell, 37 bytes
No es el más corto, pero podría decirse que es el más bonito.
También cortesía de Laikoni , aquí hay una solución que es 2 bytes más corta:
fuente
50
. Para añadir un encabezado, utilice:## Language, <xxx> bytes
.f n=
u\n->
obtener un envío de función válido. Sin embargo, también podemos guardar algunos bytes:(\x->1/x)
se puede acortar a la sección(1/)
,[1,2..]
es lo mismo[1..]
ymap(...)$
se puede(...)<$>
. Juntos 36 bytes: ¡ Pruébelo en línea!((scanl(+)0$(1/)<$>scanl(*)1[1..])!!)
ve bien.\n->
para crear Una función.APL (Dyalog Unicode) , 5 bytes
Pruébalo en línea!
Usando el truco de base mixta que se encuentra en mi respuesta de otro desafío . Usos
⎕IO←0
.Cómo funciona
fuente
1÷(n-1)!
es un dígito. ¿Podría traducirlo a J para aclarar?En realidad, 6 bytes
Pruébalo en línea!
Explicación:
fuente
Brachylog , 18 bytes
Explicación
fuente
Arce, 18
Uso:
fuente
C, 69 bytes
Ideone it!
fuente
Java con poste láser de diez pies ,
238236 bytesTiene una resistencia al desbordamiento mucho mejor que la mayoría de las otras respuestas. Para 100 términos, el resultado es
fuente
Julia, 28 bytes
Explicación
gamma(k+1)
es igual afactorial(k)
las entradas de enteros positivos, y lo generaliza para todos los valores que no sean los enteros no negativos. Guarda un byte, entonces, ¿por qué no usarlo?fuente
MATLAB / Octave, 22 bytes
Crea una función anónima llamada a la
ans
que se puede llamar usandoans(N)
.Esta solución calcula
gamma(x)
para cada elemento en la matriz [1 ... N] que es igual afactorial(x-1)
. Luego tomamos el inverso de cada elemento y sumamos todos los elementos.Demo en línea
fuente
Perl 5, 37 bytes
No es un ganador, pero agradable y directo:
Salidas para entradas de 0 a 10:
fuente
R, 17 bytes
Muy sencillo, aunque es probable que surjan problemas de precisión numérica en algún momento.
fuente
WolframAlpha , 12 bytes
fuente