ลำดับ Lehmer-Comtet


12

ลำดับ Lehmer-Comtet เป็นลำดับดังกล่าวว่าA (n)เป็นn TH อนุพันธ์ของf (x) = x xด้วยความเคารพxประเมินที่x = 1

งาน

ใช้จำนวนเต็มแบบไม่ลบเป็นอินพุตและเอาต์พุตคำที่nของลำดับ Lehmer-Comtet

นี่คือดังนั้นคุณควรลดขนาดไฟล์ของซอร์สโค้ดของคุณให้เล็กที่สุด

กรณีทดสอบ

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

คำตอบ:


11

Haskell , 77 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: f ( x ) = ∑ n = 0 f ( n ) ( x - 1) n / n ! แสดงโดย [f (1), f ′(1), f″ (1), …]

&คูณสองผู้ประกอบการเช่นฟังก์ชั่นการใช้กฎสินค้า สิ่งนี้ช่วยให้เรากำหนดฟังก์ชันs ( x ) = x xซ้ำในแง่ของตัวเองโดยใช้สมการเชิงอนุพันธ์s (1) = 1, s ′( x ) = s ( x ) s (1 + ln x ) โดยที่ ln x = ∑ n = 1 (−1) n - 1 ( n - 1)! ( x - 1) n / n !


7

Mathematica, 19 ไบต์

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

-18 ไบต์จาก @Not a tree


9
คุณจะทำให้มันสั้นลงได้มาก: D[x^x,{x,#}]/.x->1&19 ไบต์
ไม่ใช่ต้นไม้

อันที่จริงแล้ว 21 ไบต์ .. แต่ใช่! สั้นกว่ามาก!
J42161217

ฉันไม่คิดว่าคุณต้องการ-1- ลำดับจาก OEIS เริ่มต้นที่n = 0
ไม่ใช่ต้นไม้

1
โอเคถ้าอย่างนั้น! เป็น 19 ไบต์
J42161217



4

Python กับSymPy , 77 75 58 57 ไบต์

บันทึก 1 ไบต์ขอบคุณ @notjagan

บันทึกแล้ว 17 ไบต์ด้วย @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)sympy.abcไม่จำเป็นต้องมี
Anders Kaseorg

1
อืม ... คุณใช้nที่ไหน?
Zacharý

@ZacharyT ขอบคุณ! ฉันทดสอบข้อเสนอของ anders โดยบังเอิญด้วย n = 10 ดังนั้นมันจึงให้ผลลัพธ์เหมือนเดิม :) แก้ไขแล้ว
Uriel

-1 ไบต์โดยการแทนที่ด้วยx**x 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

นอกจากนี้คุณยังสามารถบันทึกไบต์โดยใส่หลัง0**n sum(...)
Ad Hoc Garf Hunter




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

2
คุณสามารถเปลี่ยนบรรทัดแรกของคุณไปและที่สองไปfrom mpmath import* diff(lambda x:x**x,1,n)(เพียงแค่ลบช่องว่างที่ไม่จำเป็นออกไป)
Zacharý

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)เพื่อหาผลของมันเมื่อประเมินที่โทร1x(0)

โบนัส: ความแตกต่างเชิงสัญลักษณ์


คุณสามารถบันทึกจำนวนมากไบต์โดยใช้การexecบีบอัด ลองออนไลน์!
Ad Hoc Garf Hunter

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.