La secuencia de Lehmer-Comtet


12

La secuencia de Lehmer-Comtet es una secuencia tal que a (n) es la n º derivada de f (x) = x x con respecto a x como evaluado en x = 1 .

Tarea

Tomar un número entero no negativo como entrada y salida de la n º término de la secuencia de Lehmer-Comtet.

Este es el por lo que debe minimizar el tamaño del archivo de su código fuente.

Casos de prueba

OEIS 5727

Aquí están los primeros dos términos en orden (copiados del OEIS)

1, 1, 2, 3, 8, 10, 54, -42, 944, -5112, 47160, -419760, 4297512, -47607144, 575023344, -7500202920, 105180931200, -1578296510400, 25238664189504, -428528786243904, 7700297625889920, -146004847062359040, 2913398154375730560, -61031188196889482880

Respuestas:


11

Haskell , 77 75 bytes, sin diferenciación integrada

x@(a:b)&y@(c:d)=a*c:zipWith(+)(b&y)(x&d)
s=1:s&(1:scanl(*)1[-1,-2..])
(s!!)

Pruébalo en línea!

Cómo funciona

Representamos una función como su lista infinita de coeficientes de la serie Taylor sobre x = 1: f ( x ) = ∑ n = 0 f ( n ) ( x - 1) n / n ! está representado por [f (1), f ′ (1), f ″ (1),…].

El &operador multiplica dos de esas funciones utilizando la regla del producto. Esto nos permite definir recursivamente la función s ( x ) = x x en términos de sí misma usando la ecuación diferencial s (1) = 1, s ′ ( x ) = s ( x ) ⋅ (1 + ln x ), donde ln x = ∑ n = 1 (−1) n - 1 ( n - 1)! ( X - 1) n / n !.


7

Mathematica, 19 bytes

D[x^x,{x,#-1}]/.x->1&

-18 bytes de @No es un árbol


99
A menos que me falte algo, puede acortarlo mucho: D[x^x,{x,#}]/.x->1&19 bytes.
No es un árbol

en realidad 21 bytes .. pero si! mucho mas corto!
J42161217

No creo que necesite la -1- la secuencia de OEIS comienza en n = 0.
No es un árbol

1
¡OK entonces! 19 bytes es
J42161217



4

Python con SymPy , 77 75 58 57 bytes

1 byte guardado gracias a @notjagan

17 bytes guardados gracias a @AndersKaseorg

from sympy import*
lambda n:diff('x^x','x',n).subs('x',1)

1
lambda n:diff('x**x','x',10).subs('x',1)no requiere sympy.abc.
Anders Kaseorg

1
Ummm ... ¿dónde lo usas n?
Zacharý

@ZacharyT gracias! casualmente probé la propuesta de anders con n = 10, por lo que dio el mismo resultado :) solucionado ahora
Uriel

-1 byte reemplazando x**xcon x^x.
notjagan


2

Python 3 , 150 bytes

lambda n:0**n or sum(L(n-1,r)for r in range(n))
L=lambda n,r:0<=r<=n and(0**n or n*L(n-2,r-1)+L(~-n,r-1)+(r-~-n)*L(~-n,r)if r else n<2or-~-n*L(n-1,0))

Pruébalo en línea!

Complejidad de tiempo de ejecución exponencial. Utiliza la fórmula dada en la página OEIS.


n>=r>=0Guarda un byte.
Ad Hoc Garf Hunter

También puede guardar un byte poniendo 0**ndespués sum(...).
Ad Hoc Garf Hunter




1

Python3 + mpmath 52 bytes

from mpmath import*
lambda n:diff(lambda x:x**x,1,n)

-3 bytes, gracias @Zachary T


1
Debe cambiar el idioma a python3 + mpmath, ya que mpmath no es una biblioteca estándar.
Ad Hoc Garf Hunter

2
Puede cambiar su primera línea a from mpmath import*, y la segunda a diff(lambda x:x**x,1,n). (solo eliminando espacios innecesarios)
Zacharý

0

Python 3 , 288 261 bytes

Diferenciación sin diferenciación incorporada.

p=lambda a,n:lambda v:v and p(a*n,n-1)or a
l=lambda v:v and p(1,-1)
e=lambda v:v and m(e,a(p(1,0),l))or 1
a=lambda f,g:lambda v:v and a(f(1),g(1))or f(0)+g(0)
m=lambda f,g:lambda v:v and a(m(f(1),g),m(g(1),f))or f(0)*g(0)
L=lambda n,f=e:n and L(n-1,f(1))or f(0)

Pruébalo en línea!

Cómo funciona

Cada una de las primeras cinco líneas define funciones y sus derivados y sus resultados cuando se evalúan en 1. Sus derivados también son funciones.

  • p es poder es decir a*x^n
  • l es logaritmo es decir ln(x)
  • e es exponencial es decir exp(x)
  • a es la suma es decir f(x)+g(x)
  • m es multiplicación es decir f(x)*g(x)

Uso: por ejemplo, exp(ln(x)+3x^2)se representaría como e(l()+p(3,2)). Dejar x=e(l()+p(3,2)). Para encontrar su derivada, llame x(1). Para encontrar su resultado cuando se evalúa en 1, llame al x(0).

Bonus: diferenciación simbólica


Puede guardar muchos bytes utilizando la execcompresión. Pruébalo en línea!
Ad Hoc Garf Hunter

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.