একটি বহুভুজের ইন্টিগ্রাল রুটগুলি সন্ধান করুন


19

চ্যালেঞ্জ

চ্যালেঞ্জটি হ'ল এমন একটি প্রোগ্রাম লিখুন যা কোনও এন-ডিগ্রি বহুবর্ষ সমীকরণের সহগকে ইনপুট হিসাবে গ্রহণ করে এবং এক্স এর অবিচ্ছেদ্য মানগুলি প্রদান করে যার জন্য সমীকরণটি সত্য holds গুণাগুণগুলি হ্রাস বা বৃদ্ধি পাওয়ার ক্রমের ইনপুট হিসাবে সরবরাহ করা হবে। আপনি সমস্ত সহগকে পূর্ণসংখ্যা হিসাবে ধরে নিতে পারেন ।

ইনপুট এবং আউটপুট

ইনপুট হ্রাস বা পাওয়ার ক্রম বাড়ানোর ক্ষেত্রে সমীকরণের সহগ হবে। সমীকরণের ডিগ্রি, অর্থাৎ 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
নোট: বন্ধ ভোটিং আগে, বিবেচনা করুন যে, এই প্রশ্ন হল না সদৃশ এই এক । আমি এই সমস্যার জন্য কমপক্ষে একটি পদ্ধতির কথা ভাবতে পারি যা অন্য চ্যালেঞ্জের জন্য তুচ্ছভাবে পরিবর্তনযোগ্য হবে না (যদিও আমি এটি বলছি না; যা আপনার কাছে রেখে গেছে; পি)।
এরিক আউটগলফার

আমরা কি ধরে নিতে পারি যে আমাদের কেবলমাত্র আমাদের ভাষার পূর্ণসংখ্যার সীমানার মধ্যে শিকড় ফিরিয়ে আনতে হবে? অথবা ভাষাগুলির পূর্ণসংখ্যার ধরণের পরিসর বৃদ্ধি করা হলেও অ্যালগরিদমটি কাজ করা উচিত, তবে আচরণ একই ছিল।
22urous

1
যদি আপনার ভাষা সেগুলি সমর্থন করে তবে আমরা একটি নেটিভ বহুবচনীয় প্রকারটিও ব্যবহার করতে পারি?
flawr

1
যদি কোনও সমাধান গৃহীত হয় না তবে কী চিরকালের জন্য চালিত প্রোগ্রামগুলি?
জ্যাক এম

1
এটি সহজ সরল রাখা।
মনীশ কুন্ডু

উত্তর:


6

এমএটিএল , 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
রাউচের উপপাদ্যের বিকল্প হিসাবে, যুক্তিসঙ্গত রুটস উপপাদ্যটি আপনার ব্যবহৃত সীমাটি ন্যায়সঙ্গত করার পক্ষে যথেষ্ট হবে। যৌক্তিক রুটসের উপপাদ্য অনুসারে, সমস্ত পূর্ণসংখ্যার শিকড়গুলি সহগের নিখুঁত মানগুলির যোগফলের চেয়ে বেশি সংক্ষিপ্ত মান দ্বারা পরম মানের সাথে আবদ্ধ থাকে। বা এমনকি আরও কঠোর, "শেষ" ননজারো সহগের নিখুঁত মান দ্বারা - অর্থাত্ x এর ক্ষুদ্রতম পাওয়ারের সহগ যার একটি ননজারো সহগ রয়েছে। (সম্ভবত কোনও বাইট সংরক্ষণ করতে সাহায্য করে না, কেবল বিকল্প বিকল্প কারণ আরআরটি সম্ভবত রাউচের চেয়ে বেশিরভাগ লোকের চেয়ে বেশি পরিচিত familiar) :)
ম্যাথমান্ডান

1
@ মাঠমান্ডান যে পদ্ধতিটি তিনটি বাইট বেশি দীর্ঘ: এখানে চেষ্টা করুন , যদিও আমি নিশ্চিত যে আমি কোনও কৌশল বা দুটি মিস করেছি
জিউসেপ

@ জিউজ্পে উভয়কে ধন্যবাদ হতে পারে X>t_w&:GyZQ~), তবে এখনও 13 বাইট
লুই মেন্ডো

1
... তবে আমি এই সীমার জন্য একটি ছোট বিকল্প খুঁজে পেয়েছি
লুইস মেন্ডো

5

কুণ্ডলী , 10 9 বাইট

-1 বাইট জাগর্বকে ধন্যবাদ

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

@ জগারব খুব সুন্দর! ধন্যবাদ
এইচ.পি.উইজ

5

হাস্কেল , 54 বাইট

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

এটি অনলাইন চেষ্টা করুন!

নিষ্ঠুর বল এবং সিন্থেটিক বিভাগ।

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 বাইট

নিমিকে Creditণ।

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

অনলাইনে চেষ্টা করে দেখার জন্য শুভকামনা , যেহেতু এটি প্রতিটি সংখ্যার Intসীমাতে পরীক্ষা করে


আপনি পুনরাবৃত্তি iকরতে [minBound..]এবং পুরো tজিনিসটি ফেলে দিতে পারেন । fসুস্পষ্ট Intতালিকার সাথে কল করুন , যেমন f [1::Int,5,6]। অবশ্যই এটি যথাযথ সময়ে শেষ হয় না।
নিমি

@ নিমিমি কেন কখনও থামবে? এটি অসীম লুপ না?
সম্পূর্ণরূপে

না, Boundedপ্রকারগুলি বন্ধ হয় maxBound, যেমন print [minBound::Bool ..]
নিমি

4

পাইথন 2 + নম্পি, 95 93 91 103 93 91 82 বাইট

-২ বাইট ধন্যবাদ ওভসকে
ধন্যবাদ শিকড়ের উপরের / নীচের সীমানার জন্য লুইস মেন্ডো
-10 বাইট ধন্যবাদ মিঃ এক্সকোডারকে

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

এটি অনলাইন চেষ্টা করুন!



@ লুইস মেন্ডো হ্যাঁ
রড

3
আমাদের বর্তমান sensক্যমত্য বলে মনে হয় যে প্রোগ্রামগুলি সর্বদা শেষ করা উচিত, যদি না চ্যালেঞ্জ অন্যথায় বলে।
জাগারব

@ জগারব, স্থির!
রড

numpy.polyvalবেশ কয়েকটি বাইট সংরক্ষণ করে ব্যবহার করে
মিঃ এক্সকোডার

4

ওল্ফ্রাম ভাষা (গণিত) , 50 47 42 25 27 বাইট

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

এটি অনলাইন চেষ্টা করুন!

আপডেট: লুই মেন্ডোর বাস্তবতা ব্যবহার করে আরও 3 বাইট গল্ফ করে

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

চৌহদ্দি দিয়ে স্লোপিয়ার পেয়ে আমরা @ গাছের পরামর্শ অনুসারে এই আরও 5 টি বাইট হ্রাস করতে পারি:

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

এটি পোস্ট করার পরে, ওপিতে "নেটিভ পলিনোমিয়ালস" এর অনুমতি দেওয়ার জন্য মন্তব্য করা হয়েছে, সুতরাং এখানে একটি 25 বাইট সমাধান রয়েছে যা বহুবর্ষকে ইনপুট হিসাবে গ্রহণ করে। এটি কাজ করে কারণ ডিফল্টরূপে গণিতের গুণকগুলি পূর্ণসংখ্যার উপর দিয়ে বহুত্বীয় হয় এবং কোনও যুক্তিযুক্ত শিকড় যেমন আকারে প্রদর্শিত m*x+bহয় তাতে প্যাটার্ন ম্যাচটি ব্যর্থ হয়।

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

@ এলফাল্ফা যেমন উল্লেখ করেছে যে এটি শূন্যের মূল যেখানে ক্ষেত্রে এটি ব্যর্থ হবে, সুতরাং আমরা Optionalপ্রতীকটি ব্যবহার করতে পারি তা স্থির করতে:

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

এটি সূক্ষ্ম গাণিতিক 11.0.1 কে পার্স করে তবে ব্যর্থ হয় এবং b_:011.2 সংস্করণে চারপাশে একটি অতিরিক্ত সেট বন্ধনী প্রয়োজন । এটি ২0 বাইট অবধি ব্যয় করতে পারে, 11.0.1 সংস্করণের পরে আরও দুটি। দেখে মনে হচ্ছে একটি "ফিক্স" এখানে রাখা হয়েছিল

অনলাইনে চেষ্টা করে দেখুন!


1
আমি মনে করি আপনি এর #.#পরিবর্তে ব্যবহার করতে পারেন Tr@Abs@#: এটি আরও খারাপ বাউন্ড হলেও কম বাইট।
একটি গাছ নয়

1
ওপি একটি মন্তব্যে বলেছে যে আপনার ভাষার অস্তিত্ব থাকলে আপনি নিজের ভাষার স্থানীয় বহুবচনপ্রকারটি ব্যবহার করতে পারেন। আমি ম্যাথামেটিকাকে ভালো করে চিনি না তবে আমি কল্পনা করি একটি আছে ... তাতে কি বাইটস সাশ্রয় হয়?
আমার আসল নাম দেখায় না


1
@ আলেফাল্ফ, স্থির
কেলি লোডার


3

ওল্ফ্রাম ভাষা (গণিত) , 33 26 31 বাইট

মন্তব্যগুলিতে কেলি লোডার দ্বারা চিহ্নিত একটি ত্রুটি স্থির করা হয়েছে।

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

এটি অনলাইন চেষ্টা করুন!

পূর্ববর্তী ভুল সমাধান:

আমি কেবল লক্ষ্য করেছি যে কোনও পূর্ণসংখ্যার সমাধানের জন্য আউটপুট খালি তালিকার পরিবর্তে অপরিজ্ঞাত; যা কয়েক বাইট অপসারণ করতে দেয়।

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

এটি অনলাইন চেষ্টা করুন!

এখন যদি কোনও পূর্ণসংখ্যার সমাধান উপস্থিত না থাকে তবে ফাংশনটি ফিরে আসে x

পূর্বে:

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

এটি অনলাইন চেষ্টা করুন!


এটি বর্তমানে 1,2,1 এর সাথে উল্লিখিত হিসাবে ব্যর্থ হয়েছে কারণ এটি মূলের পুনরাবৃত্তি করে এবং ওপি জানিয়েছে যে তাদের আলাদা হতে হবে। আপনার Unionএটি ঠিক করা দরকার ।
কেলি লোদার

@ কেলিলাউডার: আহ, আমি তা মিস করেছি। তবে, প্রদত্ত পরীক্ষার ক্ষেত্রে এটিও অনুপস্থিত ছিল।
celtschk

@ কেলিলাউডার: আমি এখন এটি ঠিক করেছি। আপনি যদি এ কারণে ক্ষুব্ধ হন, আপনি দয়া করে এটি আবার ফিরিয়ে দিতে পারেন?
celtschk

@ এসেলসচ্ক, হ্যাঁ সম্পন্ন হয়েছে।
কেলি লোডার 22'18

এর একটি অননুমোদিত বৈশিষ্ট্য ব্যবহার করে 29 বাইটSolve : ভেরিয়েবলের তালিকা বাদ দেওয়া যেতে পারে।
রোমান

3

আর , 61 59 বাইট

আমার (ভুল) দৃষ্টিভঙ্গি বাঁচাতে পারে এবং গল্ফ করা যেতে পারে তার জন্য @ মাথমান্ডানকে একটি বিশেষ ধন্যবাদ !

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একটি প্রতিসম পরিসীমা (একটি সতর্কবার্তা সঙ্গে) উত্পন্ন শুধুমাত্র প্রথম element ব্যবহার 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এবং এইভাবে এটি ব্যর্থ হয়।

যাইহোক, ম্যাথমান্ডান উল্লেখ করে যে সত্যই, এই ক্ষেত্রে, এর অর্থ এই যে এর একটি ধ্রুবক কারণ আছে 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এর সর্বাধিকতা দ্বারা ননজারো হওয়ার নিশ্চয়তা দেওয়া হয় 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। প্রথমে (ক্ষমতার সাথে আরোহণের সাথে) ননজারো সহগের অনুসন্ধান করার জন্য আর এর পরিবর্তে আর কি কোনও সংক্ষিপ্ত পথ রয়েছে? এটি প্রথমে 0
যতগুলি

@ মাঠমান্ডান maxআরও দক্ষ হবে, তবে আপনার দ্বিতীয় বক্তব্যটি , 0যেহেতু আউটপুট দেওয়ার বিষয়ে আমাকে উদ্বিগ্ন হওয়ার দরকার নেই যেহেতু এটি পরিসীমা দ্বারা উত্পন্ন হয়েছে -t:t(যেখানে tপ্রথম ননজারো সহগ রয়েছে), এটি 2 বাইট সংরক্ষণ করে!
জিউসেপে

ওহ খুব সুন্দর! (এবং পাশাপাশি একটি সুন্দর ব্যাখ্যা।)
ম্যাথমন্ডন

2

জেলি , 8 বাইট

ASŒRḅ@Ðḟ

এটি অনলাইন চেষ্টা করুন! বা টেস্ট স্যুট হিসাবে!

কিভাবে?

ASŒRḅ @ Ðḟ || সম্পূর্ণ প্রোগ্রাম (একাত্ম লিঙ্ক)।

এএস || পরম মানগুলির যোগফল।
  Œআর || এবং এর নেতিবাচক মান থেকে প্রতিসাম্য অন্তর্ভুক্তিক পরিসীমা তৈরি করুন।
       Ðḟ || এবং সত্যবাদী মান দেয় এমনগুলি বাতিল করুন ...
     ḅ @ || এগুলি বহুপদীতে প্লাগ করার সময় (বেস রূপান্তর ব্যবহার করে)।

বন্ধ ভিত্তি করে লুইস 'উত্তরএকটি বিকল্প


(অনুমোদিত) বিপরীত ক্রম গ্রহণ এবং করা সম্পর্কে আমি কি কিছু মিস করছি Ær+.Ḟ?
জোনাথন অ্যালান

আমি কিছুটা বিভ্রান্ত হয়েছি যেহেতু ন্যাপিটির সাথে পাইথন উত্তরটি এটি করে না, এবং আমি ভাবছি আমি কোনও প্রান্তের মামলাটি মিস করেছি।
জোনাথন অ্যালান

@ জোনাথান অ্যালান যেমনটি আমি প্রত্যাশা করেছি, আপনার জন্য ব্যর্থ [1,2,3]
মিঃ এক্সকোডার

"যদি প্রদত্ত সমীকরণের কোনও সমাধান না হয় তবে আউটপুট অপরিজ্ঞাত হয়"
জোনাথন অ্যালান

@JonathanAllan কিন্তু এটা করে ব্যর্থ জন্য [10,-42,8], ডান?
মিঃ এক্সকোডার

2

অক্টাভা , 59 49 বাইট

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

এটি অনলাইন চেষ্টা করুন!

এটি আমার আর উত্তরের একটি বন্দর । শুধু পার্থক্য আমি স্পষ্টভাবে ব্যবহার করতে হবে যে sign(t)এবং endপরিসীমা জেনারেট করতে, এবং এটি আছে polyvalবহুপদী গনা।

ক্রমহ্রাসমান ক্রমের সহগের সারি ভেক্টর হিসাবে ইনপুট নেয়।



2

সি (জিসিসি) , 127 126 123 বাইট

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;}

এটি অনলাইন চেষ্টা করুন!


ব্যাখ্যা

সি (জিসিসি) , 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
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন অনেক ধন্যবাদ
জোনাথন ফ্রেচ

আপনাকে ধন্যবাদ
জোনাথন ফ্রেচ

1

জাভা 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;}

@ রড দ্বারা অনুপ্রাণিত পাইথন 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

জাভাস্ক্রিপ্ট (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.