La séquence de Lehmer-Comtet


12

La séquence de Lehmer-Comtet est une séquence telle que a (n) est la n ième dérivée de f (x) = x x par rapport à x comme évalué à x = 1 .

Tâche

Prenez un entier non négatif en entrée et sortez le n ème terme de la séquence de Lehmer-Comtet.

Il s'agit de , vous devez donc minimiser la taille du fichier de votre code source.

Cas de test

OEIS 5727

Voici les premiers termes du couple dans l'ordre (copié de l'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

Réponses:


11

Haskell , 77 75 octets, aucune intégration de différenciation

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

Essayez-le en ligne!

Comment ça fonctionne

Nous représentons une fonction comme sa liste infinie de coefficients de la série de Taylor sur x = 1: f ( x ) = ∑ n = 0 f ( n ) ( x - 1) n / n ! est représenté par [f (1), f ′ (1), f ″ (1),…].

L' &opérateur multiplie deux de ces fonctions à l'aide de la règle de produit. Cela nous permet de définir récursivement la fonction s ( x ) = x x en termes d'elle-même en utilisant l'équation différentielle s (1) = 1, s ′ ( x ) = s ( x ) ⋅ (1 + ln x ), où ln x = ∑ n = 1 (−1) n - 1 ( n - 1)! ( X - 1) n / n !.


7

Mathematica, 19 octets

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

-18 octets de @Pas un arbre


9
Sauf si je manque quelque chose, vous pouvez obtenir cela beaucoup plus court: D[x^x,{x,#}]/.x->1&19 octets.
Pas un arbre le

en fait 21 octets .. mais oui! beaucoup plus court!
J42161217

Je ne pense pas que vous ayez besoin de -1- la séquence de OEIS commence à n = 0.
Pas un arbre

1
alors ok! 19 octets c'est
J42161217



4

Python avec SymPy , 77 75 58 57 octets

1 octet enregistré grâce à @notjagan

17 octets enregistrés grâce à @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)ne nécessite pas sympy.abc.
Anders Kaseorg

1
Ummm ... où utilisez-vous n?
Zacharý

@ZacharyT merci! Par coïncidence, j'ai testé la proposition d'Anders avec n = 10, donc cela a donné le même résultat :) corrigé maintenant
Uriel

-1 octet en remplaçant x**xpar x^x.
notjagan


2

Python 3 , 150 octets

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))

Essayez-le en ligne!

Complexité d'exécution exponentielle. Utilise la formule donnée dans la page OEIS.


n>=r>=0enregistre un octet.
Ad Hoc Garf Hunter

Vous pouvez également enregistrer un octet en le mettant 0**naprès sum(...).
Ad Hoc Garf Hunter




1

Python3 + mpmath 52 octets

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

-3 octets, merci @Zachary T


1
Vous devez changer la langue en python3 + mpmath, car mpmath n'est pas une bibliothèque standard.
Ad Hoc Garf Hunter

2
Vous pouvez changer votre première ligne en from mpmath import*, et la seconde en diff(lambda x:x**x,1,n). (en supprimant simplement les espaces inutiles)
Zacharý

0

Python 3 , 288 261 octets

Différenciation sans différenciation intégrée.

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)

Essayez-le en ligne!

Comment ça fonctionne

Chacune des cinq premières lignes définit les fonctions et leurs dérivés et leurs résultats lorsqu'ils sont évalués à 1. Leurs dérivés sont également des fonctions.

  • p est le pouvoir ie a*x^n
  • l est le logarithme ie ln(x)
  • e est exponentielle c'est-à-dire exp(x)
  • a est l'addition ie f(x)+g(x)
  • m est la multiplication ie f(x)*g(x)

Utilisation: par exemple, exp(ln(x)+3x^2)serait représenté par e(l()+p(3,2)). Soit x=e(l()+p(3,2)). Pour trouver sa dérivée, appelez x(1). Pour trouver son résultat une fois évalué à 1, appelez x(0).

Bonus: différenciation symbolique


Vous pouvez économiser beaucoup d'octets en utilisant la execcompression. Essayez-le en ligne!
Ad Hoc Garf Hunter

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.