Urutan Lehmer-Comtet

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

Urutan Lehmer-Comtet adalah turutan sedemikian rupa sehingga a(n) adalah derivatif n ke- f(x) = xx berkenaan dengan x seperti yang dinilai pada x = 1 .

Tugas

Ambil integer bukan negatif sebagai input dan keluarkan tempoh ke-n urutan Lehmer-Comtet.

Ini adalah supaya anda harus meminimumkan saiz fail kod sumber anda.

Kes Ujian

OEIS 5727

Inilah pasangan terma pertama dalam susunan (disalin dari 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.

Haskell , 77 75 bytes, tidak ada pembezaan

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

Cuba dalam talian!

Bagaimana ia berfungsi

Kami mewakili fungsi sebagai senarai tak terhingga pekali siri Taylor tentang x = 1: f ( x ) = Σ n = 0 f ( n ) ( x - 1) n / n ! diwakili oleh [f (1), f '(1), f "(1), ...].

& Operator mengalikan dua fungsi tersebut menggunakan aturan produk. Ini membolehkan kita menentukan fungsi s ( x ) = x x secara berurutan dengan menggunakan persamaan kebezaan s (1) = 1, s '( x ) = s ( x ) ⋅ (1 + ln x ), di mana ln x = Σ n = 1 (-1) n - 1 ( n - 1)! ( x - 1) n / n !.


Jenny_mathy 07/03/2017.

Mathematica, 19 bait

D[x^x,NO 

-18 bytes from @Not a tree

4 comments
9 Not a tree 07/03/2017
Kecuali saya kehilangan sesuatu, anda boleh mendapatkan ini lebih pendek: D[x^x,NO , 19 bytes.
Jenny_mathy 07/03/2017
sebenarnya 21 bait .. tapi ya! lebih pendek!
Not a tree 07/03/2017
Saya tidak fikir anda memerlukan -1 - urutan dari OEIS bermula pada n = 0.
1 Jenny_mathy 07/03/2017
baiklah! 19 bait itu

Luis Mendo 07/02/2017.

Octave dengan Pakej Simbolik, 36 32 bait

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

Kod menentukan fungsi anonim yang menghasilkan pembolehubah simbolik dengan hasilnya.

Try it online!


Uriel 07/03/2017.

Python dengan SymPy , 77 75 58 57 bytes

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) tidak memerlukan sympy.abc .
Uriel 07/02/2017
@AndersKaseorg terima kasih!
1 Zacharý 07/02/2017
Ummm ... di mana anda menggunakan n ?
Uriel 07/02/2017
@ZacharyT terima kasih! secara kebetulan saya mengujinya dengan tepat n = 10, sehingga memberikan hasil yang sama :) diperbaiki sekarang
notjagan 07/03/2017
-1 byte dengan menggantikan x**x dengan x^x .

xnor 07/03/2017.

Haskell , 57 bait

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

Cuba dalam talian!

Tiada terbina dalam untuk membezakan atau algebra. Output mengapung.


Anders Kaseorg 07/03/2017.

SageMath , 33 32 bytes

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

Cuba pada SageMathCell


Leaky Nun 07/03/2017.

Python 3 , 150 bait

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

Cuba dalam talian!

Kerumitan runtuh eksponen. Menggunakan formula yang diberikan di halaman OEIS.


Bhav 07/03/2017.

Python3 + mpmath 52 bytes

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

-3 bait, terima kasih @Zachary T

2 comments
1 Funky Computer Man 07/02/2017
Anda perlu menukar bahasa ke python3 + mpmath, kerana mpmath bukan perpustakaan biasa.
2 Zacharý 07/02/2017
Anda boleh menukar baris pertama anda from mpmath import* , dan yang kedua untuk diff(lambda x:x**x,1,n) . (hanya mengeluarkan ruang yang tidak diperlukan)

alephalpha 07/03/2017.

Pari / GP , 35 bait

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

Cuba dalam talian!


Leaky Nun 07/03/2017.

Python 3 , 288 261 bait

Pembezaan tanpa pembezaan terbina dalam.

 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) 

Cuba dalam talian!

Bagaimana ia berfungsi

Setiap lima baris pertama menentukan fungsi dan derivatif mereka dan hasilnya apabila dinilai pada 1 . Derivatif mereka juga berfungsi.

  • p ialah kuasa iaitu a*x^n
  • l ialah logaritma iaitu ln(x)
  • e adalah eksponen iaitu exp(x)
  • a adalah tambahan iaitu f(x)+g(x)
  • m adalah pendaraban iaitu f(x)*g(x)

Penggunaan: contohnya, exp(ln(x)+3x^2) akan diwakili sebagai e(l()+p(3,2)) . Katakan x=e(l()+p(3,2)) . Untuk mencari derivatifnya, panggil x(1) . Untuk mencari keputusannya apabila dinilai pada 1 , panggil x(0) .

Bonus: pembezaan simbolik

1 comments
Funky Computer Man 07/03/2017
Anda boleh menyimpan banyak bait dengan menggunakan pemampatan exec . Cuba dalam talian!

Related questions

Hot questions

Language

Popular Tags