Lehmer-Comtetシーケンス


12

レーマー-Comtet配列は、その配列である(N)であるn個の第誘導体F(X)= X Xに対してXで評価として、X = 1

仕事

入力として負でない整数を取り、Lehmer-Comtetシーケンスのn番目の項を出力します。

これはので、ソースコードのファイルサイズを最小限に抑える必要があります。

テストケース

OEIS 5727

最初の2つの用語を順番に示します(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

回答:


10

Haskell77 75バイト、微分組み込みなし

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

オンラインでお試しください!

使い方

我々は、約テイラー級数係数のその無限リストとしての機能を表し、X:= 1 、FX)=Σ N = 0 FNX - 1)N / N![f(1)、f '(1)、f' '(1)、…]で表されます。

&オペレータ乗算製品ルールを使用して、2つのそのような機能。これにより、微分方程式s(1)= 1、s ′(x)= sx)⋅(1 + ln x)を使用して、関数sx)= x xを再帰的に定義できます。ここで、ln x = ∑ n = 1∞(−1)n − 1n − 1)!(x − 1)n / n


7

Mathematica、19バイト

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

@Not a treeから-18バイト


9
何かが足りない限り、これをもっと短くすることができます:D[x^x,{x,#}]/.x->1&、19バイト。
ツリーではない

実際には21バイト..しかし、はい!ずっと短い!
-J42161217

私はあなたが必要とは思わない-1OEISからシーケンスが始まりで- のn = 0
未ツリー

1
OK 19バイト
J42161217



4

PythonとSymPy77 75 58 57バイト

@notjaganのおかげで1バイト節約

@AndersKaseorgのおかげで17バイト節約

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

1
lambda n:diff('x**x','x',10).subs('x',1)必要ありませんsympy.abc
アンデルスカセオルグ

1
うーん...どこで使いnますか?
ザカリー

@ZacharyTありがとう!それは同じ結果:)今固定しましたので、偶然に私は、N = 10とアンダースの提案権をテスト
ウリエル

交換することにより-1バイトx**xx^x
-notjagan


2

Python 3、150バイト

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

オンラインでお試しください!

指数関数的なランタイムの複雑さ。OEISページで指定された式を使用します。


n>=r>=0バイトを保存します。
ポストロックガーフハンター

0**nafter を置くことでバイトを保存することもできますsum(...)
ポストロックガーフハンター




1

Python3 + mpmath 52バイト

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

-3バイト、ありがとう@Zachary T


1
mpmathは標準ライブラリではないため、言語をpython3 + mpmathに変更する必要があります。
ポストロックガーフハンター

2
1行from mpmath import*目をに、2 行目をに変更できますdiff(lambda x:x**x,1,n)。(不要なスペースを削除するだけ)
ザカリー

0

Pythonの3288の 261バイト

組み込みの差別化なしの差別化。

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)

オンラインでお試しください!

使い方

最初の5行のそれぞれは、で評価され1たときの関数とその導関数、および結果を定義します。それらの導関数も関数です。

  • p パワーです a*x^n
  • l 対数です ln(x)
  • e 指数関数的です exp(x)
  • a 加算です f(x)+g(x)
  • m つまり乗算です f(x)*g(x)

使用法:たとえば、exp(ln(x)+3x^2)はとして表されe(l()+p(3,2))ます。させてくださいx=e(l()+p(3,2))。派生物を見つけるには、を呼び出しますx(1)。で評価したときに結果を見つけるには1、を呼び出しますx(0)

ボーナス:シンボリック微分


exec圧縮を使用すると、多くのバイトを節約できます。オンラインでお試しください!
ポストロックガーフハンター

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