Lehmer-Comtet序列


12

Lehmer-Comtet序列是这样的序列,即a(n)f(x)= x x相对于x的n个导数,如在x = 1处求值。

任务

以一个非负整数作为输入并输出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

Answers:


11

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)=Σ ñ = 0 ˚F ñX - 1)ñ / ñ!用[f(1),f'(1),f''(1),…]表示。

&运营商乘以使用该产品的规则两个这样的功能。这让我们递归定义函数小号X)= X X在使用本身而言微分方程小号(1)= 1,s ^ '(X)= 小号X)⋅(1 + LN X),其中Ln X = ∑ n = 1∞(-1)n -1n -1)!(x -1)n / n


7

Mathematica,19个字节

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

@不是树的-18个字节


9
除非我缺少任何东西,否则您可以使它更短:D[x^x,{x,#}]/.x->1&19个字节。
不是一棵树

实际上是21个字节。短很多!
J42161217

我不认为你需要的-1-从OEIS序列开始于ñ = 0
不是树

1
那好吧!它是19个字节
J42161217'7


5

Haskell,57个字节

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

在线尝试!

没有用于微分或代数的内置函数。输出浮点数。


4

带有SymPy的 Python ,77 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
Anders Kaseorg '17

1
嗯...您在哪里使用n
扎卡里

@ZacharyT谢谢!巧合的是,我在n = 10的情况下测试了安德斯的建议,因此得出了相同的结果:)现在固定了
Uriel

替换x**x为-1字节x^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保存一个字节。
Ad Hoc Garf Hunter's

您还可以通过放在之0**n后来保存一个字节sum(...)
Ad Hoc Garf Hunter'7




1

Python3 + mpmath 52字节

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

-3个字节,谢谢@Zachary T


1
您应该将语言更改为python3 + mpmath,因为mpmath不是标准库。
Ad Hoc Garf Hunter'7

2
您可以将第一行更改为from mpmath import*,第二行更改为diff(lambda x:x**x,1,n)。(只是去除不必要的空格)
扎卡里

0

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)

在线尝试!

怎么运行的

前五行中的每行均定义函数及其派生函数以及在处进行评估时的结果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压缩,可以节省很多字节。在线尝试!
Ad Hoc Garf Hunter'7

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.