คำนวณ n-th ซ้ำของพหุนามสำหรับค่าเฉพาะ fⁿ (x)


19

รับฟังก์ชั่นพหุนามf (เช่นเป็นรายการpของสัมประสิทธิ์จริงในลำดับขึ้นหรือลง) จำนวนที่ไม่เป็นลบnและค่าจริงx , ส่งคืน:

   f n ( x )

คือค่าของF ( F ( F ( ... ( x ) ... ))) สำหรับnประยุกต์บนx

ใช้ความแม่นยำและการปัดเศษที่เหมาะสม

วิธีแก้ปัญหาที่ใช้fเป็นรายการของสัมประสิทธิ์น่าจะเป็นสิ่งที่น่าสนใจที่สุด แต่ถ้าคุณสามารถใช้fเป็นฟังก์ชันได้จริง (ซึ่งจะช่วยลดความท้าทายนี้ให้กับเรื่องเล็กน้อย "ใช้ฟังก์ชันnครั้ง") อย่าลังเลที่จะรวมมัน หลังจากการแก้ปัญหาที่ไม่สำคัญของคุณ

ตัวอย่างกรณี

p  = [1,0,0]หรือf  = x^2,  n  = 0,  x  = 3:  f 0 (3) =3

p  = [1,0,0]หรือf  = x^2,  n  = 1,  x  = 3:  f 1 (3) =9

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 0,  x  = 2.3:  f 0 (2.3) =2.3

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 1,  x  = 2.3:  f 1 (2.3) =-8.761

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 2,  x  = 2.3:  f 2 (2.3) =23.8258

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 3,  x  = 2.3:  f 3 (2.3) =-2.03244

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 4,  x  = 2.3:  f 4 (2.3) =1.08768

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 5,  x  = 2.3:  f 5 (2.3) =-6.38336

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 6,  x  = 2.3:  f 6 (2.3) =14.7565

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 7,  x  = 2.3:  f 7 (2.3) =-16.1645

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 8,  x  = 2.3:  f 8 (2.3) =59.3077

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 9,  x  = 2.3:  f 9 (2.3) =211.333

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 10,  x  = 2.3:  f 10 (2.3) =3976.08

p  = [0.1,-2.3,-4]หรือf  = 0.1x^2-2.3x-4,  n  = 11,  x  = 2.3:  f 11 (2.3) =1571775

p  = [-0.1,2.3,4]หรือf  = −0.1x^2+2.3x+4,  n  = 0,  x  = -1.1:  f 0 (-1.1) =-1.1

p  = [-0.1,2.3,4]หรือf  = −0.1x^2+2.3x+4,  n  = 1,  x  = -1.1:  f 1 (-1.1) =1.349

p  = [-0.1,2.3,4]หรือf  = −0.1x^2+2.3x+4,  n  = 2,  x  = -1.1:  f 2 (-1.1) =6.92072

p  = [-0.1,2.3,4]หรือf  = −0.1x^2+2.3x+4,  n  = 14,  x  = -1.1:  f 14 (-1.1) =15.6131

p  = [0.02,0,0,0,-0.05]หรือf  = 0.02x^4-0.05,  n  = 25,  x  = 0.1:  f 25 (0.1) =-0.0499999

p  = [0.02,0,-0.01,0,-0.05]หรือf  = 0.02x^4-0.01x^2-0.05,  n  = 100,  x  = 0.1:  f 100 (0.1) =-0.0500249



คำตอบ Jelly ของฉันสามารถใช้ลิงค์ Jelly และพิจารณาว่าเป็น "ฟังก์ชัน" ได้หรือไม่
Erik the Outgolfer

@EriktheOutgolfer เดิมทีฉันต้องการอินพุตเป็นรายการค่าสัมประสิทธิ์เพื่อป้องกันการแก้ปัญหาเล็กน้อยเช่นนั้น อย่างไรก็ตามฉันผ่อนคลายโดยการร้องขอ ฉันแนะนำให้คุณโพสต์เวอร์ชั่นลิสต์และเพิ่มเวอร์ชันจิปาถะเป็นโน้ต (หรือตรงกันข้าม)
อดัม

ฉันโพสต์รุ่นของรายการไว้แล้ว แต่รุ่นของฟังก์ชั่นนั้นสั้นกว่ามาก
Erik the Outgolfer

@EriktheOutgolfer ใช่แน่นอน ดูบันทึกย่อของฉันเพิ่ม
อดัม

คำตอบ:


7

อ็อกเทฟ 49 ไบต์

@(p,x,n)(f=@(r,m){@()p(r(r,m-1)),x}{~m+1}())(f,n)

ลองออนไลน์!

หรือการสัมประสิทธิ์:

อ็อกเท75 75ไบต์

@(p,x,n)(f=@(f,n){@()polyval(p,f(f,n-1)),x}{~n+1}())(f,n)

ลองออนไลน์!

ขอขอบคุณเป็นพิเศษสำหรับ Suever ที่ StackOverflow สำหรับคำตอบนี้เมื่อสักครู่ที่ผ่านมาสำหรับคำถามของฉันพิสูจน์ให้เห็นว่าฟังก์ชั่นไม่ระบุชื่อซ้ำเป็นไปได้

นี้กำหนดฟังก์ชั่นที่ไม่ระบุชื่อซึ่งเป็นเสื้อคลุมสำหรับเป็นฟังก์ชั่นที่ไม่ระบุชื่อ recursive ; สิ่งที่ไม่ใช่แนวคิดอ็อกเทฟดั้งเดิมและต้องการการจัดทำดัชนีอาร์เรย์ของเซลล์แฟนซี

เป็นโบนัสรุ่นที่สองเป็นบทเรียนที่ดีในการกำหนดขอบเขตตัวแปรใน Octave อินสแตนซ์ทั้งหมดของrสามารถถูกแทนที่ด้วยกฎหมายfซึ่งก็จะเขียนทับที่มีอยู่fในขอบเขตท้องถิ่นมากที่สุด (คล้ายกับn)

คำอธิบาย

@(p,x,n)(f=@(r,m){@()p(r(r,m-1)),x}{~m+1}())(f,n)
@(p,x,n)         .                ..    .  ..   .   % Defines main anonymous function    
        (f=@(r,m).                ..    .  ).   .   % Defines recursive anonymous function
                 .                ..    .   .   .   %  r: Handle ('pointer') to recursive function
                 .                ..    .   .   .   %  m: Current recursion depth (counting from n to 0)
                 .                ..    .   (f,n)   % And call it, with
                 .                ..    .           %  r=f (handle to itself)
                 .                ..    .           %  m=n (initial recursion)
                 {                }{    }           % Create and index into cell array
                                    ~m+1            %  Index: for m>0: 1; for m==0: 2.
                                ,x                  %  Index 2: final recursion, just return x.
                  @()                               %  Index 1: define anonymous function, taking no inputs.
                     p(        )                    %   which evaluates the polynomial 
                       r(     )                     %    of the recursive function call
                         r,m-1                      %     which is called with r 
                                                    %     and recursion depth m-1 
                                                    %     (until m=0, see above)
                                         ()         % Evaluate the result of the cell array indexing operation.
                                                    %  which is either the anonymous function
                                                    %  or the constant `x`.

กุญแจสำคัญในการนี้คือฟังก์ชั่นที่ไม่ระบุชื่อจะไม่ได้รับการประเมินเมื่อมีการกำหนดไว้ ดังนั้น@()ซึ่งดูเหมือนว่าจะไม่จำเป็นเพราะฟังก์ชั่นที่ไม่ระบุชื่อซึ่งถูกเรียกใช้()โดยตรงหลังจากนั้นเป็นสิ่งจำเป็นอย่างยิ่ง มันไม่ได้ถูกเรียกเว้นแต่ว่ามันจะถูกเลือกโดยคำสั่งการจัดทำดัชนี

อ็อกเทฟ 39 ไบต์ (วิธีที่น่าเบื่อ)

function x=f(p,x,n)for i=1:n;o=p(o);end

เพื่อความสมบูรณ์แบบทางออกคู่ที่มีจำนวนไบต์สั้นที่สุด อ้าปากค้าง .


ฉันจะลองอ่านใหม่อีกครั้ง แต่ฉันก็ยังไม่ค่อยเข้าใจเท่านี้ .. ในฐานะแฟนตัวยงของอ็อกเทฟตัวใหญ่ฉันพูดได้แค่ว่าเยี่ยมมาก +1
Michthan

2
@Michthan ฉันจะพยายามอธิบายให้ดีกว่านี้ แต่มันก็เป็นคำพูดที่คู่ควรที่สุดที่ฉันเขียน - โดยทั่วไปชื่อฟังก์ชั่นเป็นส่วนใหญ่ของจำนวนไบต์ มันเกือบกระเพื่อม
Sanchises

1
@Michthan หวังว่าคำอธิบายใหม่จะทำให้รู้สึกบางอย่างมองมันในมุมมอง 'ระเบิด'
Sanchises

4

Mathematica, 56 47 28 ไบต์

Nest[x\[Function]x#+#2&~Fold~#,##2]&

\[Function] ใช้เวลา 3 ไบต์ใน UTF-8

p,x,nใช้พารามิเตอร์ในการสั่งซื้อ

p (พารามิเตอร์ 1) อยู่ในลำดับที่เพิ่มขึ้นของระดับ

เห็นได้ชัดว่าถ้าสามารถนำมาเป็นฟังก์ชั่นนี้จะลดลงเพียงเพื่อfNest


คุณต้องการกลับค่าสัมประสิทธิ์หรือไม่?
Giuseppe

@Giuseppe นั่นคือสาเหตุที่มีอยู่Reverseในรหัส
user202729

@ user202729 ฉันคิดว่าคุณสามารถใช้สัมประสิทธิ์ตามลำดับที่คุณต้องการไม่ว่าจะขึ้นหรือลง
Erik the Outgolfer

เราได้รับอนุญาตให้นำพวกเขาไปสู่ระดับที่เพิ่มขึ้นหรือลดลงผมเชื่อว่า (ฉันไม่รู้ Mathematica เลย)
Giuseppe

ใช่คุณสามารถใช้พวกเขาในลำดับที่ต้องการ: ในลำดับขึ้นหรือลง
Adám

4

Husk , 5 ไบต์

←↓¡`B

ลองออนไลน์!

ความคิดที่สำคัญที่นี่คือการประเมิน polinomial ที่จุดxเทียบเท่ากับการดำเนินการแปลงฐานจากฐานx

Bเมื่อได้รับฐานและรายการของตัวเลขทำการแปลงฐาน ที่นี่เราใช้เวอร์ชั่นที่พลิกกลับเพื่อใช้รายการตัวเลขก่อนและใช้ฟังก์ชันนี้กับมันบางส่วน จากนั้นเราจะได้ฟังก์ชันที่คำนวณค่าพหุนามที่กำหนด ณ จุดส่วนที่สองของการแก้ปัญหานี้เกี่ยวข้องกับการทำซ้ำฟังก์ชันนี้ในจำนวนครั้งที่ถูกต้อง:

Huskขนาด 3 ไบต์

←↓¡

¡ เป็นฟังก์ชั่น "iterate" ซึ่งรับฟังก์ชั่นและเป็นจุดเริ่มต้นและส่งกลับรายการที่ไม่มีที่สิ้นสุดของค่าที่ได้รับการทำซ้ำฟังก์ชั่น

ใช้ตัวเลข (อาร์กิวเมนต์ที่สามของความท้าทายนี้) และวางองค์ประกอบหลายอย่างตั้งแต่เริ่มต้นรายการ

ส่งคืนองค์ประกอบแรกของรายการผลลัพธ์



3

ทับทิมขนาด 42 ไบต์

->c,n,x{n.times{x=c.reduce{|s,r|s*x+r}};x}

C คือรายการของสัมประสิทธิ์ตามลำดับจากมากไปน้อย

รุ่นเล็กน้อยโดยที่ f คือฟังก์ชันแลมบ์ดา ( 26 ไบต์ ):

->f,n,x{n.times{x=f[x]};x}

# For example:
# g=->f,n,x{n.times{x=f[x]};x}
# p g[->x{0.02*x**4-0.01*x**2-0.05},100,0.1]

ลองออนไลน์!


3

JavaScript (ES6),  52 49 44  42 ไบต์

บันทึก 5 ไบต์ขอบคุณGBและอีก 2 ไบต์ขอบคุณNeil

รับอินพุตในรูปแบบ currying เป็น(p)(n)(x)โดยที่pคือรายการของสัมประสิทธิ์ตามลำดับจากมากไปน้อย

p=>n=>g=x=>n--?g(p.reduce((s,v)=>s*x+v)):x

กรณีทดสอบ


ถ้า p เรียงลำดับจากมากไปน้อยคุณสามารถลดการใช้ s * x + v และละเว้น i
GB

ในกรณีนี้คุณสามารถละเว้น,0จากการลดได้หรือไม่
Neil

@ นีลจับดี :-)
Arnauld

2

J , 15 ไบต์

0{(p.{.)^:(]{:)

ลองออนไลน์!

รับพหุนามเป็นรายการของค่าสัมประสิทธิ์ของการยกกำลัง

คำอธิบาย

0{(p.{.)^:(]{:)  Input: polynomial P (LHS), [x, n] (RHS)
            {:   Tail of [x, n], gets n
           ]     Right identity, passes n
  (    )^:       Repeat n times starting with g = [x, n]
     {.            Head of g
   p.              Evaluate P at that value
                   Return g = [P(head(g))]
0{               Return the value at index 0

2

05AB1E , 10 9 ไบต์

-1 ไบต์ขอบคุณErik the Outgolfer

sF³gݨm*O

ลองออนไลน์!

รับค่า x เป็นอาร์กิวเมนต์แรก, n เป็นค่าที่สองและ p ตามลำดับจากน้อยไปหามาก

คำอธิบาย

sF³gݨm*O
s         # Forces the top two input arguments to get pushed and swaped on the stack
 F        # Do n times...
  ³        # Push the third input (the coefficients)
   g       # Get the length of that array...
    ݨ     # and create the range [0 ... length]
      m    # Take the result of the last iteration to these powers (it's just x for the first iteration)
       *   # Multiply the resuling array with the corresponding coefficients
         O # Sum the contents of the array
          # Implicit print

1
³คุณสามารถลบสอง
Erik the Outgolfer

นอกจากนี้ยัง(This is in case n is 0 so x is on the stack)เป็นสิ่งที่ผิดคุณยังต้องการsสำหรับการไม่เป็นศูนย์ n
Erik the Outgolfer

ใช่นั่นเป็นความจริง. ฉันคิดมากขึ้นตามบรรทัดการแทนที่¹²ด้วยsดังนั้นมันจึงได้งานของการผลัก x ไปยังสแต็กที่ทำใน 1 ไบต์โดยไม่ต้องวนซ้ำอย่างน้อยหนึ่งครั้ง น่าจะเป็นคำที่ดีขึ้น ^^ 'ขอบคุณสำหรับ -1!
Datboi

ฉันหมายความว่าคุณจะยังคงต้องการมันตั้งแต่ 05AB1E ใช้อินพุตสุดท้ายสำหรับอินพุตโดยนัยหากอินพุตทั้งหมดถูกอ่าน
Erik the Outgolfer

" sF³gݨm³O" และในคำอธิบายด้วย ...
Erik the Outgolfer

2

Haskellขนาด 15 ไบต์

((!!).).iterate

ลองออนไลน์!

ขอขอบคุณมนุษย์ทั้งหมดถึง 11 ไบต์จากทั้งสองโซลูชั่น

สิ่งนี้จะกำหนดฟังก์ชั่นโดยปริยายที่ใช้ฟังก์ชั่นเป็นอาร์กิวเมนต์แรกและnเป็นอาร์กิวเมนต์ที่สองของมันและรวบรวมฟังก์ชั่นที่มีnเวลาของตัวเอง สิ่งนี้สามารถถูกเรียกพร้อมกับอาร์กิวเมนต์xเพื่อรับค่าสุดท้าย ขอบคุณความมหัศจรรย์ของการสาปแช่งนี่เท่ากับฟังก์ชั่นหนึ่งที่รับอาร์กิวเมนต์สามตัว


การรับค่าสัมประสิทธิ์แทนการโต้แย้งฟังก์ชั่น:

Haskell , 53 ไบต์

((!!).).iterate.(\p x->sum$zipWith(*)p[x^i|i<-[0..]])

ลองออนไลน์!

นี่เป็นเช่นเดียวกับรหัสข้างต้น แต่ประกอบด้วยฟังก์ชั่นแลมบ์ดาที่แปลงรายการค่าสัมประสิทธิ์เป็นฟังก์ชันพหุนาม ค่าสัมประสิทธิ์จะถูกนำในลำดับที่กลับจากตัวอย่าง - xตามอำนาจของจากน้อยไปมาก



TIO ของอันที่สองควรใช้รายการเป็นอาร์กิวเมนต์ไม่ใช่ฟังก์ชั่น;) แม้ว่าคุณจะสามารถบันทึกไบต์จำนวนหนึ่งโดยใช้การพับแบบนี้ (โปรดทราบว่าศูนย์พหุนามไม่สามารถเป็นได้[]แต่ต้องเป็นอะไรที่[0]คล้ายกัน )
ंმო

2

APL (Dyalog) , 20 9 ไบต์

{⊥∘⍵⍣⎕⊢⍺}

ลองออนไลน์!

สิ่งนี้ใช้xเป็นอาร์กิวเมนต์ซ้ายสัมประสิทธิ์ของฟังก์ชันเป็นอาร์กิวเมนต์ที่ถูกต้องและnจาก STDIN

มองย้อนกลับไปที่นี้หลังจากที่หลายคนเป็นเวลานานทำให้ผมตระหนักว่าสามารถลดความซับซ้อนของการคำนวณโดยใช้การแปลงฐาน


APL (Dyalog) 5 ไบต์

หากเราสามารถใช้ฟังก์ชั่นเป็นฟังก์ชั่น Dyalog APL นี่อาจเป็น 5 ไบต์

⎕⍣⎕⊢⎕

ใช้เวลาx, nและจากนั้นฟังก์ชั่นในขณะที่ข้อมูลจาก STDIN


2

R , 96 58 55 52 ไบต์

f=function(n,p,x)`if`(n,f(n-1,p,x^(seq(p)-1)%*%p),x)

ลองออนไลน์!

คำอธิบาย:

seq(p)สร้างรายการ1, 2, ..., length(p)เมื่อpเป็นเวกเตอร์ดังนั้นseq(p)-1เลขชี้กำลังของพหุนามจึงx^(seq(p)-1)เท่ากับx^0(เสมอเท่ากับ 1) , x^1, x^2, ...และคำนวณผลิตภัณฑ์ดอท%*%ด้วยการpประเมินพหุนามที่xประเมินพหุนามที่

นอกจากนี้หากPใช้เป็นฟังก์ชั่นนี่จะเป็น38 ไบต์:

function(n,P,x)`if`(n,f(n-1,P,P(x)),x)

และแน่นอนเราสามารถสร้างPโดยP=function(a)function(x)sum(x^(seq(a)-1)*a)



1

Python 3 , 70 69 ไบต์

f=lambda p,n,x:n and f(p,n-1,sum(c*x**i for i,c in enumerate(p)))or x

ใช้เวลาpในการเรียงลำดับเช่นถ้าpเป็นแล้วที่สอดคล้องพหุนามมี[0, 1, 2] p(x) = 0 + 1*x + 2*x^2โซลูชันการเรียกซ้ำง่าย ๆ

ลองออนไลน์!


1

C # (. NET Core) , 82 ไบต์

using System.Linq;f=(p,n,x)=>n<1?x:p.Select((c,i)=>c*Math.Pow(f(p,n-1,x),i)).Sum()

ลองออนไลน์!

ทำรายการค่าสัมประสิทธิ์ในลำดับตรงกันข้ามจากกรณีทดสอบ (เพิ่มขึ้นตามลำดับ?) เพื่อให้ดัชนีในอาร์เรย์เท่ากับพาวเวอร์ x ควรยกขึ้น

และรุ่นเล็กน้อยใน 30 ไบต์:

f=(p,n,x)=>n<1?x:f(p,n-1,p(x))

ลองออนไลน์!

ใช้ผู้รับมอบสิทธิ์และนำไปใช้ซ้ำ n ครั้ง


1

MATL 11 ไบต์

ii:"ZQ6Mw]&

ลองออนไลน์!

น่าสนใจน้อยกว่าคำตอบอ็อกเทฟของฉันเล็กน้อยแม้ว่าฉันคิดว่ามีการเล่นกลอย่างชาญฉลาดของอินพุตเพื่อให้แน่ใจว่าn=0ทำงานได้ตามที่คาดไว้


1

Julia 0.6.0 (78 ไบต์)

using Polynomials;g(a,n,x)=(p=Poly(a);(n>0&&(return g(a,n-1,p(x)))||return x))

Explainations:

แพคเกจพหุนามเป็นคำอธิบายที่ค่อนข้างสวย: มันสร้างชื่อพหุนาม หลังจากนั้นก็เป็นการเรียกซ้ำขั้นพื้นฐาน

เพื่อให้มีพหุนาม: -4.0 - 2.3 * x + 0.1 * x ^ 2 อินพุตaจะต้องเป็นเช่นนั้นa = [-4, -2.3, 0.1]


1

ความจริง 91 ไบต์

f(n,g,x)==(for i in 1..n repeat(v:=1;r:=0;for j in 1..#g repeat(r:=r+v*g.j;v:=v*x);x:=r);x)

เว้าแหว่ง

fn(n,g,x)==
     for i in 1..n repeat
          v:=1; r:=0
          for j in 1..#g repeat(r:=r+v*g.j;v:=v*x)
          x:=r
     x

อินพุตสำหรับ polynomy g เป็นหนึ่งในรายการของตัวเลขในด้านหลังของตัวอย่างของแบบฝึกหัด ตัวอย่างเช่น

[1,2,3,4,5]  

มันจะเป็นตัวแทนของ polinomy

1+2*x+3*x^2+4*x^3+5*x^4

ทดสอบ:

(3) -> f(0,[0,0,1],3)
   (3)  3
                                                    Type: PositiveInteger
(4) -> f(1,[0,0,1],3)
   (4)  9
                                                    Type: PositiveInteger
(5) -> f(0,[-4,-2.30,0.1],2.3)
   (5)  2.3
                                                              Type: Float
(6) -> f(1,[-4,-2.30,0.1],2.3)
   (6)  - 8.7610000000 000000001
                                                              Type: Float
(7) -> f(2,[-4,-2.30,0.1],2.3)
   (7)  23.8258121
                                                              Type: Float
(8) -> f(9,[-4,-2.30,0.1],2.3)
   (8)  211.3326335688 2052491
                                                              Type: Float
(9) -> f(9,[-4,-2.30,0.1,0,0,0,0,1],2.3)
   (9)  0.4224800431 1790652974 E 14531759
                                                              Type: Float
                                   Time: 0.03 (EV) + 0.12 (OT) = 0.15 sec
(10) -> f(2,[-4,-2.30,0.1,0,0,0,0,1],2.3)
   (10)  44199336 8495528344.36
                                                              Type: Float


1

C ++ 14, 71 ไบต์

ในฐานะแลมบ์ดาที่ไม่มีชื่อทั่วไปให้ส่งคืนผ่านxพารามิเตอร์:

[](auto C,int n,auto&x){for(auto t=x;t=0,n--;x=t)for(auto a:C)t=a+x*t;}

Ungolfed และ testcase:

#include<iostream>
#include<vector>

using namespace std;

auto f=
[](auto C,int n,auto&x){
 for(
  auto t=x; //init temporary to same type as x
  t=0, n--; //=0 at loop start, also check n
  x=t       //apply the result
  )
  for(auto a:C)
   t=a+x*t; //Horner-Scheme
}
;


int main() {
 vector<double> C = {0.1,-2.3,-4};//{1,0,0};
 for (int i = 0; i < 10; ++i) {
  double x=2.3;
  f(C, i, x);
  cout << i << ": " << x << endl;
 }
}

0

QBICขนาด 19 ไบต์

[:|:=:*c^2+:*c+:}?c

ใช้อินพุตเป็น

  • จำนวนการวนซ้ำ
  • ค่าเริ่มต้นของ x
  • แล้วพหุนาม 3 ส่วน

ตัวอย่างผลลัพธ์:

Command line: 8 2.3 0.1 -2.3 -4
 59.30772

0

Clojure 66 ไบต์

#(nth(iterate(fn[v](apply +(map *(iterate(partial * v)1)%3)))%2)%)

ตัวอย่างเต็มรูปแบบ:

(def f #(nth(iterate(fn[v](apply +(map *(iterate(partial * v)1)%3)))%2)%))
(f 10 2.3 [-4 -2.3 0.1])
; 3976.0831439050253

การเขียนฟังก์ชั่นคือ 26 ไบต์:

#(apply comp(repeat % %2))

(def f #(apply comp(repeat % %2)))
((f 10 #(apply + (map * [-4 -2.3 0.1] (iterate (partial * %) 1)))) 2.3)
; 3976.0831439050253

0

Japt , 18 ไบต์

ตรงไปตรงมาสวยทำในสิ่งที่ท้าทายพูดกับดีบุก

o r_VË*ZpVÊ-EÉÃx}W
o                  // Take `n` and turn it into a range [0,n).
  r_            }W // Reduce over the range with initial value of `x`.
    VË             // On each iteration, map over `p`, yielding the item
      *Z           // times the current reduced value
        pVÊ-EÉ     // to the correct power,
              Ãx   // returning the sum of the results.

ใช้เวลาในการสั่งซื้อปัจจัยการผลิตn, ,px

ลองออนไลน์!

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