Trình tự Lehmer-Comtet


12

Trình tự Lehmer-Comtet là một chuỗi sao cho a (n) là đạo hàm thứ n của f (x) = x x đối với x như được đánh giá tại x = 1 .

Bài tập

Lấy một số nguyên không âm làm đầu vào và đầu ra số hạng thứ n của chuỗi Lehmer-Comtet.

Đây là vì vậy bạn nên giảm thiểu kích thước tệp của mã nguồn.

Các trường hợp thử nghiệm

OEIS 5727

Dưới đây là các thuật ngữ cặp đôi đầu tiên theo thứ tự (được sao chép từ 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

Câu trả lời:


10

Haskell , 77 75 byte, không có nội dung phân biệt

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

Chúng tôi biểu diễn một hàm là danh sách vô hạn của các hệ số chuỗi Taylor về x = 1: f ( x ) = ∑ n = 0 f ( n ) ( x - 1) n / n ! được đại diện bởi [f (1), f ′ (1), f ″ (1), khắc].

Các &nhân lên điều hành hai chức năng đó bằng cách sử dụng quy tắc sản phẩm. Điều này cho phép chúng ta định nghĩa đệ quy hàm s ( x ) = x x theo chính phương trình sử dụng phương trình vi phân s (1) = 1, s ′ ( x ) = s ( x ) (1 + ln x ), trong đó ln x = Σ n = 1 (-1) n - 1 ( n - 1)! ( x - 1) n / n !.


7

Toán học, 19 byte

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

-18 byte từ @ Không phải là một cây


9
Trừ khi tôi thiếu một cái gì đó, bạn có thể rút ngắn hơn rất nhiều: D[x^x,{x,#}]/.x->1&19 byte.
Không phải là một cái cây vào

thực sự là 21 byte .. nhưng có! ngắn hơn rất nhiều!
J42161217

Tôi không nghĩ rằng bạn cần -1- chuỗi từ OEIS bắt đầu từ n = 0.
Không phải là một cây vào

1
được rồi Đó là 19 byte
J42161217



4

Python với SymPy , 77 75 58 57 byte

Lưu 1 byte nhờ @notjagan

17 byte được lưu nhờ @AndersKaseorg

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

1
lambda n:diff('x**x','x',10).subs('x',1)không yêu cầu sympy.abc.
Anders Kaseorg

1
Ummm ... bạn sử dụng ở nđâu?
Zacharý

@ZacharyT cảm ơn! tình cờ tôi đã thử nghiệm đề xuất của anders với n = 10, vì vậy nó đã cho kết quả tương tự :) đã được sửa ngay bây giờ
Uriel

-1 byte bằng cách thay thế x**xbằng x^x.
notjagan


2

Python 3 , 150 byte

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

Hãy thử trực tuyến!

Độ phức tạp thời gian chạy theo cấp số nhân. Sử dụng công thức được đưa ra trong trang OEIS.


n>=r>=0tiết kiệm một byte.
Đăng Rock Garf Hunter

Bạn cũng có thể lưu một byte bằng cách đặt 0**nsau sum(...).
Đăng Rock Garf Hunter




1

Python3 + mpmath 52 byte

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

-3 byte, Cảm ơn @Zachary T


1
Bạn nên thay đổi ngôn ngữ thành python3 + mpmath, vì mpmath không phải là một thư viện chuẩn.
Đăng Rock Garf Hunter

2
Bạn có thể thay đổi dòng đầu tiên của bạn thành from mpmath import*, và dòng thứ hai thành diff(lambda x:x**x,1,n). (chỉ xóa các khoảng trống không cần thiết)
Zacharý

0

Python 3 , 288 261 byte

Phân biệt mà không phân biệt tích hợp.

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)

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

Mỗi trong năm dòng đầu tiên xác định các hàm và các dẫn xuất của chúng và kết quả của chúng khi được đánh giá tại 1. Dẫn xuất của chúng cũng là chức năng.

  • p là sức mạnh tức là a*x^n
  • l là logarit tức là ln(x)
  • e là số mũ tức là exp(x)
  • a là bổ sung tức là f(x)+g(x)
  • m là phép nhân f(x)*g(x)

Cách sử dụng: ví dụ, exp(ln(x)+3x^2)sẽ được trình bày dưới dạng e(l()+p(3,2)). Hãy để x=e(l()+p(3,2)). Để tìm đạo hàm của nó, hãy gọi x(1). Để tìm kết quả của nó khi được đánh giá tại 1, hãy gọi x(0).

Tiền thưởng: sự khác biệt tượng trưng


Bạn có thể tiết kiệm rất nhiều byte bằng cách sử dụng execnén. Hãy thử trực tuyến!
Đăng Rock Garf Hunter

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.