ค้นหารากที่สมบูรณ์ของ A พหุนาม


19

ท้าทาย

ความท้าทายคือการเขียนโปรแกรมที่ใช้ค่าสัมประสิทธิ์ของสมการพหุนามแบบ n-degree ใด ๆ เป็นอินพุตและส่งกลับค่าอินทิกรัลของ x ซึ่งสมการนั้นเป็นจริง ค่าสัมประสิทธิ์จะได้รับเป็นอินพุตตามลำดับของการลดหรือเพิ่มพลังงาน คุณสามารถสันนิษฐานได้ว่าค่าสัมประสิทธิ์ทั้งหมดจะเป็นจำนวนเต็ม

อินพุทและเอาท์พุท

อินพุตจะเป็นค่าสัมประสิทธิ์ของสมการในการลดหรือเพิ่มลำดับพลังงาน ระดับของสมการคือพลังงานสูงสุดของ x จะน้อยกว่าจำนวนทั้งหมดขององค์ประกอบในอินพุต 1 เสมอ

ตัวอย่างเช่น:

[1,2,3,4,5] -> represents x^4 + 2x^3 + 3x^2 + 4x + 5 = 0 (degree = 4, as there are 5 elements)
[4,0,0,3] -> represents 4x^3 + 3 = 0 (degree = 3, as there are 3+1 = 4 elements)

ผลลัพธ์ของคุณควรเป็นค่าเฉพาะที่แตกต่างกันของ x ซึ่งเป็นไปตามสมการที่กำหนด ทุกค่าสัมประสิทธิ์การป้อนข้อมูลที่เป็นจำนวนเต็มและพหุนามการป้อนข้อมูลจะไม่เป็นพหุนามศูนย์ หากไม่มีวิธีแก้สำหรับสมการที่กำหนดเอาท์พุทจะไม่ได้กำหนด

หากสมการมีรากซ้ำให้แสดงรากนั้นเพียงครั้งเดียว คุณสามารถส่งออกค่าในลำดับใดก็ได้ นอกจากนี้สมมติว่าอินพุตจะมีตัวเลขอย่างน้อย 2 ตัว

ตัวอย่าง

[1,5,6] -> (-3,-2)
[10,-42,8] -> (4)
[1,-2,0] -> (0,2)
[1, 1, -39, -121, -10, 168] -> (-4, -3, -2, 1, 7)
[1, 0, -13, 0, 36] -> (-3, -2, 2, 3)
[1,-5] -> (5)
[1,2,3] -> -

โปรดทราบว่าสมการในตัวอย่างที่สองมีรูต 0.2 แต่ไม่แสดงเป็น 0.2 ไม่ใช่จำนวนเต็ม

เกณฑ์การให้คะแนน

นี่คือดังนั้นรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ!


7
หมายเหตุ: การออกเสียงลงคะแนนก่อนที่จะปิดโปรดพิจารณาว่าคำถามนี้ไม่ซ้ำกับคนนี้ ฉันสามารถคิดถึงวิธีการอย่างน้อยหนึ่งวิธีในการแก้ไขปัญหานี้ซึ่งจะไม่สามารถแก้ไขได้อีกเล็กน้อยสำหรับความท้าทายอื่น ๆ (แม้ว่าฉันจะไม่ได้พูดอะไรก็ตาม
Erik the Outgolfer

เราสามารถสมมติได้หรือไม่ว่าเราจะต้องคืนค่ารากภายในขอบเขตจำนวนเต็มของภาษาของเราเท่านั้น? หรืออัลกอริทึมควรทำงานแม้ว่าช่วงชนิดจำนวนเต็มภาษาเพิ่มขึ้น แต่พฤติกรรมยังคงเหมือนเดิม
Οurous

1
เราสามารถใช้ประเภทพหุนามดั้งเดิมได้หรือไม่หากภาษาของคุณรองรับสิ่งเหล่านั้น
ข้อบกพร่อง

1
โปรแกรมนั้นทำงานได้ตลอดไปหรือไม่หากไม่ยอมรับวิธีแก้ไข
แจ็ค M

1
นั่นคือการทำให้สิ่งต่าง ๆ ง่ายขึ้น
Manish Kundu

คำตอบ:


6

MATL , 13 12 ไบต์

|stE:-GyZQ~)

ลองออนไลน์!

สิ่งนี้ใช้ความจริงที่ว่าสำหรับสัมประสิทธิ์จำนวนเต็มค่าสัมบูรณ์ของรูตใด ๆ จะน้อยกว่าผลรวมของค่าสัมบูรณ์ของสัมประสิทธิ์

คำอธิบาย

พิจารณาการป้อนข้อมูล[1 5 6]เป็นตัวอย่าง

|    % Implicit input. Absolute value
     % STACK: [1 5 6]
s    % Sum
     % STACK: 12
t    % Duplicate
     % STACK: 12, 12
E    % Multiply by 2
     % STACK: 12, 24
:    % Range
     % STACK: 12, [1 2 ... 23 24]
-    % Subtract, elemet-wise
     % STACK: [11 10 ... -11 -12]
G    % Push input again
     % STACK: [11 10 ... -11 -12], [1 5 6]
y    % Duplicate from below
     % STACK: [11 10 ... -11 -12], [1 5 6], [11 10 ... -11 -12]
ZQ   % Polyval: values of polynomial at specified inputs
     % STACK: [11 10 ... -11 -12], [182 156 ... 72 90]
~    % Logical negation: turns nonzero into zero
     % STACK: [11 10 ... -11 -12], [0 0 ... 0] (contains 1 for roots)
)    % Index: uses second input as a mask for the first. Implicit display
     % STACK: [-3 -2]

3
เพื่อเป็นทางเลือกให้กับทฤษฎีของ Rouche ทฤษฎีบท Rational Roots ก็เพียงพอที่จะพิสูจน์ขอบเขตที่คุณใช้ โดยทฤษฎีบท Rational Roots รากจำนวนเต็มทั้งหมดจะถูกล้อมรอบด้วยค่าสัมบูรณ์โดยค่าสูงสุดของค่าสัมบูรณ์ของสัมประสิทธิ์ซึ่งมีความแน่นกว่าผลรวม หรือแม้แต่เข้มงวดมากขึ้นด้วยค่าสัมบูรณ์ของค่าสัมประสิทธิ์ไม่ใช่ศูนย์สุดท้ายคือสัมประสิทธิ์ของกำลังที่เล็กที่สุดของ x ซึ่งมีค่าสัมประสิทธิ์ไม่เป็นศูนย์ (อาจไม่ได้ช่วยประหยัดไบต์ใด ๆ เป็นเพียงหลักฐานทางเลือกเนื่องจาก RRT น่าจะคุ้นเคยมากกว่า Rouche สำหรับคนส่วนใหญ่) :)
mathmandan

1
@Mathmandan วิธีการที่มีความยาวสามไบต์: ลองที่นี่ถึงแม้ว่าฉันแน่ใจว่าฉันพลาดกลอุบายหรือสอง
Giuseppe

@Giuseppe ขอบคุณทั้งคู่ อาจจะเป็นX>t_w&:GyZQ~)แต่ยังคง 13 ไบต์
Luis Mendo

1
... แต่ฉันพบทางเลือกที่สั้นกว่าสำหรับช่วง
Luis Mendo

5

Husk , 10 9 ไบต์

-1 ไบต์ขอบคุณ Zgarb

uSȯf¬`Bṁṡ

ลองออนไลน์!

คำอธิบาย

       ṁṡ   Concatenate together the symmetric ranges of each coefficient
            (It is guaranteed that the integer roots lie in the range [-n..n],
                        where n is the coefficient with the largest magnitude)
 Sȯf        Find all the values in that range which
    ¬       are zero
     `B     when plugged through the polynomial
            (Base conversion acts as polynomial evaluation)
u           De-duplicate the roots

คุณสามารถทำṁṡแทนoṡ►aหากคุณซ้ำซ้อนในภายหลัง
Zgarb

@Zgarb ดีมาก! ขอบคุณ
H.PWiz

5

Haskell , 54 ไบต์

f l|t<-sum$abs<$>l=[i|i<-[-t..t],foldl1((+).(i*))l==0]

ลองออนไลน์!

กำลังดุร้ายและการแบ่งส่วนสังเคราะห์

Ungolfed กับUniHaskellและ-XUnicodeSyntax

import UniHaskell

roots     Num a  [a]  [a]
roots xs = [r | r  -bound  bound, foldl1 ((+)  (r ×)) xs  0]
             where bound = sum $ abs § xs

โซลูชันสำรอง 44 ไบต์

เครดิตกับ nimi

f l=[i|i<-[minBound..],foldl1((+).(i*))l==0]

โชคดีกับการพยายามออนไลน์เช่นการตรวจสอบนี้ทุกจำนวนในIntช่วง 's


คุณสามารถย้ำiกว่า[minBound..]และวางทั้งtสิ่ง โทรfด้วยอย่างชัดเจนรายการเช่นInt f [1::Int,5,6]แน่นอนว่ามันไม่เสร็จในเวลาที่เหมาะสม
nimi

@nimi ทำไมจะหยุดล่ะ มันจะวนซ้ำไม่สิ้นสุดใช่ไหม
มนุษย์โดยสิ้นเชิง

ไม่มีBoundedประเภทหยุดที่เช่นmaxBound print [minBound::Bool ..]
nimi

4

Python 2 + จำนวน 95 93 91 103 93 91 82 ไบต์

-2 bytes ขอบคุณ ovs
ขอบคุณ Luis Mendo สำหรับขอบเขตบน / ล่างของราก
-10 ไบต์ขอบคุณ Mr. Xcoder

from numpy import*
def f(r):s=sum(fabs(r));q=arange(-s,s);print q[polyval(r,q)==0]

ลองออนไลน์!



@ LuisMendo ใช่
ร็อด

3
ฉันทามติในปัจจุบันของเราดูเหมือนว่าโปรแกรมจะต้องยุติเสมอเว้นแต่จะมีการระบุเป็นอย่างอื่น
Zgarb

@Zarb นั่นคงที่!
ร็อด

การใช้numpy.polyvalบันทึกค่อนข้างน้อยไบต์
Mr. Xcoder

4

ภาษา Wolfram (Mathematica) , 50 47 42 25 27 ไบต์

{}⋃Select[x/.Solve[#~FromDigits~x==0],IntegerQ]&

ลองออนไลน์!

อัปเดต: โดยใช้ข้อเท็จจริงของหลุยส์เมนโดนาออกไปอีก 3 ไบต์

Pick[r=Range[s=-Tr@Abs@#,-s],#~FromDigits~r,0]&

การใช้คำพูดเล็ก ๆ น้อย ๆ กับขอบเขตเราสามารถลดขนาดนี้อีก 5 ไบต์ต่อ @Not a tree

Pick[r=Range[s=-#.#,-s],#~FromDigits~r,0]&

หลังจากโพสต์สิ่งนี้ OP ให้ความเห็นอนุญาตให้ "ชื่อพหุนาม" ดังนั้นนี่คือโซลูชั่น 25 ไบต์ที่ยอมรับพหุนามเป็นอินพุต สิ่งนี้ใช้งานได้เพราะโดยค่าเริ่มต้น Mathematica จะใส่ชื่อพหุนามมากกว่าจำนวนเต็มและมีเหตุผลรากปรากฏในรูปแบบm*x+bที่ล้มเหลวในการจับคู่รูปแบบ

Cases[Factor@#,b_+x:>-b]&

ดังที่ @alephalpha ชี้ให้เห็นว่าสิ่งนี้จะล้มเหลวในกรณีที่ศูนย์เป็นรูตดังนั้นเพื่อแก้ไขว่าเราสามารถใช้Optionalสัญลักษณ์ได้:

Cases[Factor@#,b_:0+x:>-b]&

นี่เป็นการแยกวิเคราะห์ Mathematica 11.0.1 ที่ดี แต่ล้มเหลวและต้องใช้วงเล็บชุดพิเศษb_:0ในเวอร์ชัน 11.2 ซึ่งจะใช้เวลาในการสำรองข้อมูลสูงถึง 27 ไบต์และอีกสองรุ่นหลังจากรุ่น 11.0.1 ดูเหมือนว่า "แก้ไข" ถูกวางไว้ที่นี่

ลองออนไลน์!


1
ฉันคิดว่าคุณสามารถใช้#.#แทนTr@Abs@#: มันเป็นขอบเขตที่แย่กว่า แต่น้อยกว่าไบต์
ไม่ใช่ต้นไม้

1
OP กล่าวในความคิดเห็นว่าคุณสามารถใช้ประเภทพหุนามดั้งเดิมของภาษาของคุณหากมีอยู่ ฉันไม่รู้ Mathematica ดี แต่ฉันจินตนาการว่ามีอยู่หนึ่งอัน ... นั่นช่วยประหยัดไบต์ได้ไหม
ไม่ไม่แสดงชื่อจริงของฉัน


1
@alephalpha แก้ไขแล้ว
Kelly Lowder

24 ไบต์พร้อมด้วยรูปแบบเริ่มต้นและส่วนประกอบที่ถูกต้อง
โรมัน

3

ภาษา Wolfram (Mathematica) , 33 26 31 bytes

แก้ไขข้อผิดพลาดที่ Kelly Lowder บันทึกไว้ในความคิดเห็น

x/.{}⋃Solve[#==0,x,Integers]&

ลองออนไลน์!

โซลูชันที่ไม่ถูกต้องก่อนหน้านี้:

ฉันเพิ่งสังเกตเห็นว่าไม่มีวิธีแก้ปัญหาจำนวนเต็มเอาท์พุทไม่ได้กำหนดแทนรายการที่ว่างเปล่า; ที่อนุญาตให้ลบสองสามไบต์

x/.Solve[#==0,x,Integers]&

ลองออนไลน์!

xตอนนี้ถ้าไม่มีการแก้ปัญหาที่มีอยู่จำนวนเต็มผลตอบแทนการทำงาน

ก่อนหน้านี้:

x/.Solve[#==0,x,Integers]/.x->{}&

ลองออนไลน์!


สิ่งนี้ล้มเหลวตามที่ระบุไว้ในปัจจุบันด้วย 1,2,1 ขณะที่มันทำซ้ำรูทและ OP กล่าวว่าพวกเขาจะต้องแตกต่างกัน คุณจำเป็นต้อง Unionแก้ไข
Kelly Lowder

@ KellyLowder: อ่าฉันพลาดไปแล้ว แต่แล้วมันก็หายไปในกรณีทดสอบที่กำหนด
celtschk

@ KellyLowder: ตอนนี้ฉันได้แก้ไขแล้ว ในกรณีที่คุณลงคะแนนเนื่องจากสิ่งนี้คุณสามารถเปลี่ยนกลับได้ไหม?
celtschk

@cellschk อ๋อเสร็จแล้ว
Kelly Lowder

29 ไบต์โดยใช้คุณลักษณะที่ไม่มีเอกสารของSolve: รายการตัวแปรสามารถละเว้นได้
โรมัน

3

R , 61 59 ไบต์

ขอบคุณเป็นพิเศษสำหรับ@Mathmandanสำหรับการชี้ให้เห็นวิธีการ (ไม่ถูกต้อง) ของฉันจะถูกบันทึกไว้และกอล์ฟ!

function(p)(x=-(t=p[!!p][1]):t)[!outer(x,seq(p)-1,"^")%*%p]

ลองออนไลน์!

รับอินพุตเป็นรายการของค่าสัมประสิทธิ์ในลำดับที่เพิ่มขึ้นเช่นc(-1,0,1)แสดงถึง-1+0x+1x^2แสดงให้เห็นถึง

การใช้ทฤษฎีรากเหตุผลเหตุผลต่อไปนี้ใช้งานได้เกือบ 47 ไบต์:

function(p)(x=-p:p)[!outer(x,seq(p)-1,"^")%*%p]

ลองออนไลน์!

-p:pสร้างช่วงสมมาตร (ที่มีคำเตือน) โดยใช้เพียงองค์ประกอบแรกของ,p a_0ตามทฤษฎีรากเหตุผลเหตุผลรากของเหตุผลทั้งหมดPจะต้องอยู่ในรูปแบบp/qที่pหารa_0และqหารa_n(บวกหรือลบ) ดังนั้นโดยใช้เพียงa_0ก็เพียงพอแล้วสำหรับ|a_0|>0เป็นสำหรับการใด ๆ,q |p/q|<=a_0อย่างไรก็ตามเมื่อa_0==0เป็นจำนวนเต็มใด ๆแล้ว0จึงล้มเหลว

อย่างไรก็ตาม mathmandan ชี้ให้เห็นว่าจริงๆแล้วในกรณีนี้หมายความว่ามีปัจจัยคงx^kที่ที่สามารถแยกตัวประกอบออกมาได้และสมมติว่าkมีค่าสูงสุดเราจะเห็นว่า

P(x) = x^k(a_k + a_{k+1}x + ... a_n x^{n-k}) = x^k * Q(x)

จากนั้นเราจะใช้เหตุผลรากทฤษฎีบทไปQ(x)และในขณะที่a_kรับประกันได้ว่าจะเป็นศูนย์โดย maximality ของk, a_kให้เป็นระเบียบเรียบร้อยมุ่งรากจำนวนเต็มของQและรากของPรากของQพร้อมกับศูนย์ดังนั้นเราจะมีทุกจำนวนเต็ม รากของPโดยใช้วิธีนี้

นี่เทียบเท่ากับการหาค่าสัมประสิทธิ์ไม่ใช่ศูนย์แรกของพหุนามt=p[!!p][1]และใช้มันแทนการไร้เดียงสาp[1]เป็นขอบเขต ยิ่งกว่านั้นตั้งแต่ช่วง-t:tนั้นมีศูนย์อยู่เสมอการใช้Pกับช่วงนี้จะยังคงให้ศูนย์เป็นรูทถ้าเป็นจริง

ungolfed:

function(polynom) {
 bound <- polynom[polynom != 0][1]             #first nonzero value of polynom
 range <- -bound:bound                         #generates [-bound, ..., bound]
 powers <- outer(range,seq_along(p) - 1, "^")  #matrix where each row is [n^0,n^1,n^2,...,n^deg(p)]
 polyVals <- powers %*% polynom                #value of the polynomial @ each point in range
 return(range[polyVals == 0])                  #filter for zeros and return
}


(ผมคิดว่าคุณสามารถใช้maxของค่าสัมบูรณ์แทนการsumนี้จะไม่เปลี่ยนแปลงนับไบต์ แต่มันควรจะปรับปรุงประสิทธิภาพการทำงาน.) a_0==0อย่างไรก็ตามใช่สงสารรุ่นสั้นไม่ได้ทำงานกับ มีวิธีสั้น ๆ ใน R เพื่อค้นหาค่าสัมประสิทธิ์ไม่ใช่ศูนย์แรก (ที่มีอำนาจขึ้นไป) และใช้สิ่งนั้นแทนหรือไม่? นี้จะสอดคล้องกับแฟออกมาเป็นจำนวนมาก x เท่าที่จะทำได้ครั้งแรก (แน่นอนแล้วคุณจะต้องจำไว้ว่าการส่งออก0ยังซึ่งคงจะมีค่าใช้จ่ายบางส่วนไบต์.)
mathmandan

@ คณิตศาสตร์maxจะมีประสิทธิภาพมากขึ้น แต่ถึงจุดที่สองของคุณเนื่องจากฉันไม่ต้องกังวลเกี่ยวกับการส่งออก0เนื่องจากมันถูกสร้างขึ้นโดยช่วง-t:t(ซึ่งtเป็นค่าสัมประสิทธิ์ที่ไม่ใช่ศูนย์แรก) จะช่วยประหยัด 2 ไบต์!
Giuseppe

โอ้ดีมาก! (และเป็นคำอธิบายที่สวยงามเช่นกัน)
mathmandan

2

เยลลี่ขนาด 8 ไบต์

ASŒRḅ@Ðḟ

ลองออนไลน์! หรือเป็นชุดทดสอบ!

อย่างไร?

ASŒRḅ @ Ðḟ || โปรแกรมเต็มรูปแบบ (ลิงค์ monadic)

ตาม | | รวมค่าสัมบูรณ์
  ŒR || และสร้างช่วงรวมสมมาตรจากค่าลบ
       Ðḟ || และทิ้งผู้ที่ให้คุณค่าที่แท้จริง ...
     ḅ @ || เมื่อเสียบเข้ากับพหุนาม (ใช้การแปลงฐาน)

ตามออกคำตอบที่หลุยส์ ทางเลือก


มีบางอย่างที่ฉันขาดหายไปเกี่ยวกับการสั่งซื้อแบบย้อนกลับและอนุญาตให้ทำÆr+.Ḟหรือไม่
Jonathan Allan

ฉันสับสนเล็กน้อยเนื่องจากคำตอบของ Python กับ numpy ก็ไม่ได้ทำเช่นนั้นและฉันคิดว่าฉันพลาดเคสแบบขอบ
Jonathan Allan

@JanathanAllan อย่างที่ฉันคาด[1,2,3]ไว้
นาย Xcoder

"หากไม่มีวิธีแก้สำหรับสมการที่กำหนดเอาท์พุทจะไม่ได้กำหนด"
Jonathan Allan

@JonathanAllan แต่มันไม่ล้มเหลวสำหรับ[10,-42,8]ใช่มั้ย?
นาย Xcoder

2

คู่ , 59 49 ไบต์

@(p)(x=-(t=p(~~p)(end)):sign(t):t)(!polyval(p,x))

ลองออนไลน์!

นี้เป็นท่าเรือของฉันคำตอบ R ข้อแตกต่างเพียงอย่างเดียวคือฉันต้องใช้อย่างชัดเจนsign(t)และendสร้างช่วงและpolyvalต้องคำนวณพหุนาม

รับอินพุตเป็นเวกเตอร์แถวของค่าสัมประสิทธิ์ในลำดับที่ลดลง



2

C (gcc) , 127 126 123 ไบต์

  • บันทึกหนึ่งไบต์ต้องขอบคุณKevin Cruijssen ; การเล่นกอล์ฟไปl+~j++l-++j
  • ขอบคุณceilingcatสำหรับการบันทึกสามไบต์
x,X,j,m,p;f(A,l)int*A;{for(m=j=0;j<l;m+=abs(A[j++]));for(x=~m;X=x++<m;p||printf("%d,",x))for(p=j=0;j<l;X*=x)p+=A[l-++j]*X;}

ลองออนไลน์!


คำอธิบาย

C (gcc) , 517 ไบต์

x,X,j,m,p;                      // global integer variables
f(A,l)int*A;{                   // define function, takes in integer array pointer and length
 for(m=j=0;j<l;m+=abs(A[j++])); // loop through array, sum up absolute values
  for(x=~m;X=x++<m;             // loop through all values x in [-m, m], prime X
   p||printf("%d,",x))          // at loop's end, print x value if polynomial value is zero
    for(p=j=0;j<l;X*=x)         // loop through coefficients
     p+=A[l-++j]*X;}            // build polynomial

ลองออนไลน์!


l+~j++สามารถเล่นกอล์ฟได้ที่l-++j
Kevin Cruijssen

@KevinCruijssen ขอบคุณมาก
Jonathan Frech

@ceilingcat ขอบคุณ
Jonathan Frech

1

Java 8, 141 140 ไบต์

a->{int l=a.length,s=0,i,r,f,p;for(int n:a)s+=n<0?-n:n;for(r=~s;r++<s;System.out.print(p==0?r+",":""))for(p=i=0,f=1;i<l;f*=r)p+=a[l-++i]*f;}

แรงบันดาลใจจาก@Rod 's งูหลาม 2 คำตอบ (รุ่น 82 ไบต์ของเขา)

สนุกท้าทาย! ฉันเรียนรู้มากมายจากการศึกษาเกี่ยวกับพหุนามและเห็นว่าคนอื่น ๆ ที่นี่ได้ทำอย่างไร

คำอธิบาย:

ลองออนไลน์

a->{                   // Method with integer-array parameter and no return-type
  int l=a.length,      //  The length of the input-array
      s=0,             //  Sum-integer, starting at 0
      i,               //  Index integer
      r,               //  Range-integer
      f,               //  Factor-integer
      p;               //  Polynomial-integer
  for(int n:a)         //  Loop over the input-array
    s+=n<0?-n:n;       //   And sum their absolute values
  for(r=~s;r++<s;      //  Loop `r` from `-s` up to `s` (inclusive) (where `s` is the sum)
      System.out.print(p==0?r+",":""))
                       //    After every iteration: print the current `r` if `p` is 0
    for(p=i=0,         //   Reset `p` to 0
        f=1;           //   and `f` to 1
        i<l;           //   Loop over the input-array again, this time with index (`i`)
        f*=r)          //     After every iteration: multiply `f` with the current `r`
      p+=              //    Sum the Polynomial-integer `p` with:
         a[l-++i]      //     The value of the input at index `l-i-1`,
                 *f;}  //     multiplied with the current factor `f`



0

JavaScript (ES6), 97 ไบต์

a=>[...Array((n=Math.max(...a.map(Math.abs)))-~n)].map(_=>n--).filter(i=>!a.reduce((x,y)=>x*i+y))

รับค่าสัมประสิทธิ์ในการลดลำดับของกำลังงานและผลลัพธ์ส่งออกตามลำดับจากมากไปน้อย



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