Lehmer-Comtet dizisi


12

Lehmer-COMTET dizisi olduğu bir dizidir bir (n) olan , n türevi inci f (x) = x x göre x değerlendirildi olarak x = 1 .

Görev

Giriş ve çıkış olarak bir negatif olmayan bir sayıyı al n Lehmer-COMTET dizisinin dönem,.

Bu bu nedenle kaynak kodunuzun dosya boyutunu en aza indirmelisiniz.

Test Durumları

OEIS 5727

Sırayla ilk çift terimler (OEIS'ten kopyalanmıştır)

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

Yanıtlar:


11

Haskell , 77 75 bayt, farklılaşma yok

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

Çevrimiçi deneyin!

Nasıl çalışır

X = 1: f ( x ) = ∑ n = 0 f ( n ) ( x - 1) n / n ile ilgili Taylor serisi katsayılarının sonsuz listesi olarak bir işlevi temsil ediyoruz ! [f (1), fp (1), fp (1),…] ile temsil edilir.

&Operatör çarpar ürün kuralını kullanarak iki tür fonksiyonlar. Bu, s ( x ) = x x fonksiyonunu, s (1) = 1, s ′ ( x ) = s ( x ) ⋅ (1 + ln x ) diferansiyel denklemini kullanarak özyinelemeli olarak tanımlamamıza izin verir , burada ln x = ∑ n = 1 (−1) n - 1 ( n - 1)! ( X - 1) n / n !.


7

Mathematica, 19 bayt

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

@Ağaçtan değil -18 bayt


9
Ben bir şey eksik sürece, çok daha kısa alabilirsiniz: D[x^x,{x,#}]/.x->1&19 bayt.
Ağaç değil

aslında 21 bayt .. ama evet! çok daha kısa!
J42161217

İhtiyacınız olduğunu düşünmüyorum -1- OEIS dizisi n'den başlıyor = 0'da
Ağaç değil

1
tamam ozaman! 19 bayt
J42161217



4

SymPy'li Python , 77 75 58 57 bayt

@Notjagan sayesinde 1 bayt kaydedildi

@AndersKaseorg sayesinde 17 byte tasarruf edildi

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

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

1
Hımm ... nerede kullanıyorsun n?
Zacharý

@ZacharyT teşekkürler! tesadüfen anders'ın önerisini n = 10 ile test ettim, bu yüzden aynı sonucu verdi :) şimdi düzeltildi
Uriel

Değiştirerek -1 bayt x**xile x^x.
notjagan


2

Python 3 , 150 bayt

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

Çevrimiçi deneyin!

Üstel çalışma zamanı karmaşıklığı. OEIS sayfasında verilen formülü kullanır.


n>=r>=0bir bayt kaydeder.
Ad Hoc Garf Hunter

Ayrıca koyarak bir bayt kaydedebilirsiniz 0**nsonra sum(...).
Ad Hoc Garf Hunter




1

Python3 + mpmath 52 bayt

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

-3 bayt, Teşekkürler @Zachary T


1
Mpmath standart bir kitaplık olmadığı için dili python3 + mpmath olarak değiştirmeniz gerekir.
Ad Hoc Garf Hunter

2
İlk satırınızı from mpmath import*ve ikinci satırınızı olarak değiştirebilirsiniz diff(lambda x:x**x,1,n). (sadece gereksiz yerleri kaldırarak)
Zacharý

0

Python 3 , 288261 bayt

Yerleşik farklılaşma olmadan farklılaşma.

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)

Çevrimiçi deneyin!

Nasıl çalışır

İlk beş satırın her biri, değerlendirildiğinde fonksiyonları ve türevlerini ve sonuçlarını tanımlar 1. Türevleri de fonksiyonlardır.

  • p güç yani a*x^n
  • l logaritma yani ln(x)
  • e üstel yani exp(x)
  • a toplama yani f(x)+g(x)
  • m çarpma yani f(x)*g(x)

Kullanım: örneğin, exp(ln(x)+3x^2)olarak temsil edilir e(l()+p(3,2)). Bırakın x=e(l()+p(3,2)). Türevini bulmak için arayın x(1). Adresinde değerlendirildiğinde sonucunu bulmak için 1arayın x(0).

Bonus: sembolik farklılaşma


execSıkıştırma kullanarak çok bayt kaydedebilirsiniz . Çevrimiçi deneyin!
Ad Hoc Garf Hunter

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.