Lehmer-Comtetシーケンス

Funky Computer Man 09/14/2017. 10 answers, 1.093 views
code-golf sequence integer calculus

Lehmer-Comtetシーケンスは、 a(n)x = 1評価されるx = 1に関してf(x) = xxn次導関数であるようなシーケンスです。

仕事

非負の整数を入力とし、Lehmer-Comtetシーケンスのn番目の項を出力します。

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

テストケース

OEIS 5727

ここに最初のカップルの用語があります(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 Answers


Anders Kaseorg 07/03/2017.

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∞f nx - 1) n / n ! [f(1)、f '(1)、f "(1)、...]で表される。

&演算子は、プロダクトルールを使用して2つのそのような関数を乗算します。 これは微分方程式s (1)= sx )= sx )・(1 + ln x )を使用して関数sx )= x xを再帰的に定義することを可能にする。ここで、ln x =Σn = 1∞ (-1) n -1n -1)!( x -1) n / n


Jenny_mathy 07/03/2017.

Mathematica、19バイト

D[x^x,NO 

-18 bytes from @Not a tree

4 comments
9 Not a tree 07/03/2017
私が何かを逃していなければ、 D[x^x,NO 、19バイトをもっと短くすることができます。
Jenny_mathy 07/03/2017
実際には21バイト..しかし、はい! もっと短く!
Not a tree 07/03/2017
私はあなたが-1を必要とは思わない - OEISからのシーケンスはn = 0で始まる。
1 Jenny_mathy 07/03/2017
大丈夫! それは19バイトです

Luis Mendo 07/02/2017.

シンボリックパッケージのオクターブ36 32バイト

 syms x
@(n)subs(diff(x^x,n),x,1) 

このコードは、結果と一緒にシンボリック変数を出力する無名関数を定義します。

Try it online!


Uriel 07/03/2017.

Python with SymPy77 75 58 57バイト

1 byte saved thanks to @notjagan

17 bytes saved thanks to @AndersKaseorg

 from sympy import*
lambda n:diff('x^x','x',n).subs('x',1) 
5 comments
1 Anders Kaseorg 07/02/2017
lambda n:diff('x**x','x',10).subs('x',1)sympy.abc必要としません。
Uriel 07/02/2017
@AndersKaseorgありがとう!
1 Zacharý 07/02/2017
うーん...どこでnを使うの?
Uriel 07/02/2017
@ ZacharyTありがとう! 偶然にも、n = 10でアンドラの提案をテストしたので、同じ結果が得られました。
notjagan 07/03/2017
x^xx^x置き換えることによって-1バイト。

xnor 07/03/2017.

ハスケル 、57バイト

 f 0=1
f n=f(n-1)-foldl(\a k->f(k-1)/(1-n/k)-a*k)0[1..n-1] 

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

差別化または代数のための組み込み関数はありません。 出力は浮動小数点です。


Anders Kaseorg 07/03/2017.

SageMath33 32バイト

 lambda n:diff(x^x,x,n).subs(x=1) 

SageMathCellで試してみてください


Leaky Nun 07/03/2017.

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ページで指定された数式を使用します。


Bhav 07/03/2017.

Python3 + mpmath 52バイト

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

-3バイト、Thanks @ Zachary T

2 comments
1 Funky Computer Man 07/02/2017
mpmathは標準ライブラリではないので、言語をpython3 + mpmathに変更する必要があります。
2 Zacharý 07/02/2017
最初の行をfrom mpmath import* 2番目の行をdiff(lambda x:x**x,1,n)変更することができます。 (不要なスペースを削除するだけです)

alephalpha 07/03/2017.

パリ/ GP 、35バイト

n->n!*Pol((1+x+O(x*x^n))^(1+x))\x^n 

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


Leaky Nun 07/03/2017.

Python 3、288 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は指数関数ie 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)呼び出します。

ボーナス: 象徴的な差別化

1 comments
Funky Computer Man 07/03/2017
あなたは、 exec圧縮を使ってたくさんのバイトを保存することができます。 オンラインで試してみてください!

Related questions

Hot questions

Language

Popular Tags