বহুল প্রিন্ট মুদ্রণ


38

ভূমিকা

মানুষ একটি অসাধারণ প্রজাতি, তবে আমরা কখনও কখনও বিশেষত কম্পিউটারগুলির জন্য বুঝতে খুব বিশ্রী হতে পারি। বিশেষত, আমরা আপাতদৃষ্টিতে স্বেচ্ছাসেবী বিধিগুলি সহ একটি বহু বিভক্ত ফ্যাশনে বহুবচন লিখতে পছন্দ করি।

এই নিয়মগুলি ব্যবহার করে সঠিকভাবে বহুবচনটি ফর্ম্যাট করতে আপনি কী সংক্ষিপ্ততম প্রোগ্রামটি লিখতে পারেন?

চ্যালেঞ্জ

ইনপুট

-1000 এবং 1000 (অন্তর্ভুক্ত) এর মধ্যে পূর্ণসংখ্যার একটি তালিকা, বহুবর্ষের সহগের প্রতিনিধিত্ব করে, শেষ এন্টিটি x ^ 0 (ধ্রুবক) এর সহগ হয়, দ্বিতীয় শেষটি x ^ 1 এর সহগ হয় etc.

আউটপুট

একটি স্ট্রিং মানুষের বহুগুণে সঠিকভাবে ফরম্যাট করা গাণিতিক স্বরলিপিতে এই বহুবর্ষের প্রতিনিধিত্ব করে।

নিয়মাবলী:

  • নেতৃস্থানীয় গুণফলের চিহ্নটি যদি তা নেতিবাচক হয় তবেই প্রদর্শিত হয়।

Right: -x^2+3

Wrong: +x^2+3

  • 0 এর সহগ সহ উপাদানগুলি মুদ্রিত হয় না (কোণার ক্ষেত্রে ব্যতীত যেখানে সমস্ত সহগ 0 * হয়)।

Right: x^5-x^2+3

Wrong: x^5+0x^4+0x^3-x^2+0x+3

  • সহগ -1এবং +1সেগুলি 1 ছাড়া প্রদর্শিত হবে, যদি না তারা ধ্রুবক হয়।

Right: x^5-x^2+1

Wrong: 1x^5-1x^2+1

  • ১ টির চেয়ে বেশি হলে বেদীটি প্রদর্শিত হয় এবং ঘেরটি 0 টির চেয়ে বড় হয় তবে চলকটি প্রদর্শিত হয়।

Right: 3x^3-7x^2+2x+1

Wrong: 3x^3-7x^2+2x^1+1x^0

  • * কর্নার কেস: শূন্য মানের ফলে সাধারণত সেই উপাদানটি মুদ্রণ করা যায় না, যদি সমস্ত সহগের শূন্য হয় তবে ধ্রুবক 0 মুদ্রণ করা উচিত।

Right: 0

Wrong: 0x+0

Wrong: (nothing)

  • এটি কোড-গল্ফ তাই বিজয়ী সবচেয়ে কম বাইট সহ প্রোগ্রাম হবে program

উদাহরণ ইনপুট এবং আউটপুট

Input:                  Output:
      [0]                      0
      [0,0]                    0
      [0,-1,35,0]             -x^2+35x
      [5,1,7,-9]               5x^3+x^2+7x-9
      [100,0,0,-1]             100x^3-1
      [931,21,-11,1]           931x^3+21x^2-11x+1

আমি আপনার সমাধান দেখার জন্য প্রত্যাশায় আনন্দ কর!

সম্পাদনা করুন:

  • আপনি চাইলে হোয়াইটস্পেসের মাধ্যমে অপারেশনগুলি ঘিরে রাখতে পারেন। সুতরাং 3x+5এবং 3x + 5উভয় ঠিক আছে। 3x+ 5এবং 3x +5না।
  • আপনি যদি প্রকৃত খাঁটি অক্ষর তৈরি করতে চান (টেক্সটে বলুন) যা অনুমোদিত হয় তবে এটি মানুষের লেখার আরও নিকটবর্তী।
  • গুণফলগুলি অবশ্যই কোনও দশমিক ছাড়াই উপস্থিত হওয়া উচিত 9x^2যেমন সঠিক, 9.0x^2তা নয়।

7
একটি প্রশ্ন যা আমার স্যান্ডবক্সে জিজ্ঞাসা করা উচিত ছিল কিন্তু না, আমরা কি অপারেটরগুলির মধ্যে সাদা স্থান দিয়ে মুদ্রণ করতে পারি? এত 3x^2 + 4বনাম 3x^2+4?
জিউসেপে

1
কেরেটগুলি ব্যবহার করে আমাদের কী এক্সপোটার আউটপুট করা দরকার? অথবা একটি প্রকৃত সুপারস্ক্রিপ্ট চরিত্র উত্পাদন করার অনুমতি দেওয়া হবে (যেমন টেক্সের একটি উত্তরের জন্য)?
টটলম্যান

3
@ কেভিন ক্রুজসেন আমি ওপি নই তবে আমি বলব না, কারণ বেশিরভাগ মানুষ এ জাতীয় লেখেন না।
শ্রীভাতসার

2
@ মনিষকুন্ডু হ্যাঁ নিশ্চিত যে আপনি ইনপুটটিকে স্ট্রিং হিসাবে নিতে পারবেন।
শান মুরান

1
@ ওসমনমোরান কিছুই মজাদার নয়, কেবল একটি সরল 1x-> xপ্রতিস্থাপনের পরিবর্তিত হয় না তা নিশ্চিত 21x^2করে 2x^2
ডিএলস্ক

উত্তর:


10

রেটিনা 0.8.2 , 56 বাইট

(?=( \S+)+)
x^$#1
\b0x.\d+ 

\b1x
x
x.1 
x 
 0

 -
-
 
+

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

(?=( \S+)+)
x^$#1

xসহ সমস্ত পাওয়ার সন্নিবেশ করান x^1তবে সহ নয় x^0

\b0x.\d+ 

xশূন্য সহগের সমস্ত ক্ষমতা মুছুন , তবে পিছনে নেই 0(এখনও)।

\b1x
x

এর গুণক 1(তবে ধ্রুবক নয় 1) মুছুন ।

x.1 
x 

মুছুন ^1এর x^1

 0

যদি না থাকে তবে ধ্রুবক 0 মুছুন।

 -
-

এর আগে স্পেস মুছুন -

 
+

বাকী কোনও স্থানকে +এস তে পরিবর্তন করুন ।


6

জাভাস্ক্রিপ্ট (ES6), 107 106 বাইট

a=>a.map(c=>c?s+=(c>0&&s?'+':_)+(!--e|c*c-1?c:c<0?'-':_)+(e?e-1?'x^'+e:'x':_):e--,e=a.length,_=s='')&&s||0

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

কিভাবে?

আউটপুট প্রতিটি সহগ নিম্নলিখিত সূত্র প্রয়োগের দ্বারা নির্মিত ইনপুট অ্যারের একটি [] যখন বর্তমান এক্সপোনেন্ট সম্পর্কে অবগত থাকার

1 ম সূত্র: যোগ চিহ্ন

যদি সহগটি কঠোরভাবে ইতিবাচক হয় এবং আউটপুট এক্সপ্রেশনটিতে এটি প্রথম শব্দ নয়, আমরা একটি সংযুক্ত করি +। অন্যথায়, আমরা কিছুই সংযোজন।

c > 0 && s ? '+' : _

২ য় সূত্র: বিয়োগ চিহ্ন এবং সহগ

যদি প্রকাশকটি শূন্য হয় বা সহগের পরম মান 1 এর সমান হয় না, আমরা সহগকে সংযোজন করি (যার মধ্যে একটি শীর্ষস্থানীয় অন্তর্ভুক্ত থাকতে পারে -)। অন্যথায়, আমরা হয় একটি সংযুক্ত -(যদি সহগ নেতিবাচক হয়) বা কিছুই।

!--e | c * c - 1 ? c : c < 0 ? '-' : _

তৃতীয় সূত্র: পরিবর্তনশীল এবং ঘাতক

যদি ব্যয়কারী 0 হয়, আমরা কিছুই সংযোজন করি না। যদি ব্যয়কারীটি 1 হয়, আমরা সংযোজন করি x। অন্যথায়, আমরা ব্যয়কারী x^দ্বারা সংযোজন ।

e ? e - 1 ? 'x^' + e : 'x' : _

এটি এই ক্ষেত্রে ব্যর্থ: [0,1,35,0], এটি + x ^ 2
মকোটোসান

2
@ মাকোটোসান এটি রিপোর্ট করার জন্য ধন্যবাদ! এখনই ঠিক আছে।
আর্নল্ড

5

স্ট্যাক্স , 37 বাইট

┴₧↕ê♦•Vªâÿσ9s╘dσ■à@@ⁿ■o─╦ñºº┌x╡ER▓ δ¿

এটি চালান এবং অনলাইনে ডিবাগ করুন

এখানে আনপ্যাকড, অরগল্ফড সংস্করণ।

r{          reverse the input and map using block ...
  |c        skip this coefficient if it's falsy (zero)
  0<.+-@    sign char; e.g. '+'
  _|aYv i!+ abs(coeff)!=1 || i>0
    y$      str(abs(coeff)); e.g. '7'
    z       ""
  ?+        if-then-else, concatenate; e.g. '+7'
  "x^`i"    string template e.g. 'x^3' or 'x^0'
  iJ(T+     truncate string at i*i and trim. e.g. 'x^3' or ''
mr$         re-reverse mapped array, and flatten to string
c43=t       if it starts with '+', drop the first character
c0?         if the result is blank, use 0 instead

এটি চালান


5

পাইথন 3, 279 277 258 251 বাইট

k=str.replace
def f(x):
 z=len(x)
 y='--'*(['-1']==[c for c in x if'0'!=c][:1])
 for i,v in enumerate(x):
  p=str(z+~i)
  if v in'-1'and~i+z:y+='+x^'+p
  elif'0'!=v:y+='+'+v+'x^'+p
 return y and k(k(k(k(y[1:],'+-','-'),'^1',''),'x^0',''),'-+','-')or 0

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

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

Ovs এবং NK1406 কে বিশেষ ধন্যবাদ


সমস্ত ত্রুটি স্থির।
মনীষ কুণ্ডু

আপনি তাদের তৈরি করতে সমতা চেকগুলিকে পুনরায় অর্ডার করতে পারেন if'0'!=iএবং if'-1'==i
জাকারি


@ অনেক ধন্যবাদ
মনিশ কুণ্ডু


4

পরী / জিপি , 41 বাইট

p->concat([c|c<-Vec(Str(Pol(p))),c!="*"])

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


যদি *সহগ এবং ভেরিয়েবলের মধ্যে একটি অনুমোদিত হয়:

পরী / জিপি , 3 বাইট

Pol

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


এমনকি গণিতেরও মনে হয় নি যে এটির জন্য কোনও বিল্টিন রয়েছে!
ননি মজ

4

এপিএল (ডায়ালগ ক্লাসিক) , 114 113 109 107 106 বাইট

{{⍵≡'':⍕0⋄⍵↓⍨'+'=⊃⍵}∊⍵{{'1x'≡2↑1↓⍵:¯1⌽1↓1⌽⍵⋄⍵}('-0+'[1+×⍺]~⍕0),∊(U/⍕|⍺),(U←⍺≠0)/(⍵>⍳2)/¨'x'('^',⍕⍵)}¨⌽⍳⍴⍵}

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

-৪ বাইটস @ ডিজাইমাকে ধন্যবাদ!

এটি স্পষ্টভাবে আরও নিচে গল্ফ করা যেতে পারে। এটি প্রয়োজন⎕IO←0


অবশেষে আমি এই দুটি বাইট
মুণ্ডন করেছি

3

পিপ , 78 বাইট

(RV(B."x^"._MERVg)J'+)R[`\b0[^+]+``x.0|\^1|^\++|\++$``\b1x``\++-?`][xx'x_@v]|0

সহগকে কমান্ড-লাইন আর্গুমেন্ট হিসাবে গ্রহণ করে। এটি অনলাইন চেষ্টা করুন!

ব্যবহার ME(মানচিত্রে-গনা) এবং J(যোগদানের) ফর্ম কিছু জেনারেট করতে 0x^3+-1x^2+35x^1+0x^0, এবং তারপর Regex প্রতিস্থাপন একটি গুচ্ছ সঠিক বিন্যাসে এই রুপান্তর।



3

পাইথন 3, 161 162 বাইট

ওভিএসকে ধন্যবাদ একটি বাগ স্থির করে।

l=len
lambda p:''.join(['+'*(i>0)*(c>0)+(str(c)[:-1],str(c))[abs(c)!=1or i==l(p)-1]+'x'*(i!=l(p)-1)+('^%d'%(l(p)+~i))*(i<l(p)-2)for i,c in enumerate(p)if c])or'0'

সম্প্রসারিত:

l=len # Alias the len function since we use it a lot
lambda p: ''.join([ # Join a list of strings
    '+'*(i>0)*(c>0) # Prepend a + if this isn't the first term and the coefficient is positive
    + (str(c)[:-1], str(c))[abs(c) != 1 or i == l(p) - 1] # If the coefficient is 1 and this isn't the last term, delete the '1' from the string representation, otherwise just use the string representation
    + 'x' * (i != l(p) - 1) # If this isn't the last term, append an x
    + ('^%d' % (l(p) + ~i)) * (i < l(p) - 2) # If this isn't one of the last two terms, append the exponent
for i, c in enumerate(p) if c]) # Iterating over each coefficient with its index, discarding the term if the coefficient is zero
or '0' # If all of the above resulted in an empty string, replace it with '0'

3

সি # , 237 বাইট

c=>{var b=1>0;var r="";int l=c.Length;var p=!b;for(int i=0;i<l;i++){int n=c[i];int e=l-1-i;var o=p&&i>0&&n>0?"+":n==-1&&e!=0?"-":"";p=n!=0?b:p;r+=n==0?"":o+(e==0?$"{n}":e==1?$"{n}x":n==1||n==-1?$"x^{e}":$"{n}x^{e}");}return r==""?"0":r;}

1
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার


3

ওল্ফ্রাম ভাষা / গণিত, 39 বাইট

TraditionalForm@Expand@FromDigits[#,x]&

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

ডানদিকে প্রবেশের জন্য একটি অন্তর্নির্মিত রয়েছে Turn

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

ওল্ফ্রাম ভাষা / গণিত, 93 বাইট

StringReplace[StringRiffle[ToString/@InputForm/@MonomialList@FromDigits[#,x],"+"],"+-"->"-"]&

কমপক্ষে আমার কাছে, এটি গাণিতিক হেরফেরের জন্য ডিজাইন করা ভাষার জন্য আশ্চর্যজনকভাবে দীর্ঘ। দেখে মনে হচ্ছে Expand@FromDigits[#,x]&এটি কাজ করা উচিত, তবে বহুবচনগুলির জন্য ডিফল্ট ক্রম হ'ল প্রশ্নের প্রয়োজনের বিপরীত, সুতরাং কিছু অতিরিক্ত ফিনগলিংয়ের প্রয়োজন।

ব্যাখ্যা

FromDigits[#,x]               converts input list to polynomial (technically converts to a number in base x)
MonomialList@                 gets list of terms of polynomial
InputForm/@                   converts each term to the form a*x^n
ToString/@                    then to a string version of that
StringRiffle[...,"+"]         joins using +'s
StringReplace[...,"+-"->"-"]& replaces +-'s with -'s

না করা উচিত SringReplaceহবে StringReplace?
স্কট মিলনার

@ স্কটমিলনার যখন আমি এটি অনুলিপি করছিলাম তখন নিশ্চয়ই একটি ভুল হয়েছে। এটি লক্ষ্য করার জন্য ধন্যবাদ!
ড্যানথম্যান 16'18

3

পাইথন 3: 150 146 বাইট

f=lambda l:''.join('+-'[a<0]+str(a)[a<0:5*((abs(a)!=1)|(1>i))]+'x^'[:i]+str(i)[:i-1]for i,a in zip(range(len(l)-1,-1,-1),l)if a).lstrip('+')or '0'

(পূর্ববর্তী বাস্তবায়ন):

f=lambda l: ''.join('+-'[a<0]+str(a)[a<0:5*((abs(a)!=1)|(1>i))]+'x^'[:i]+str(i)[:i-1] for i,a in zip(range(len(l)-1,-1,-1),l) if a).lstrip('+') or '0'

আপনি এটি অনলাইনে চেষ্টা করতে পারেন

কুডোস টু: @ বেঞ্জামিন


1
আরহগ, আমাকে পেয়েছে! আপনি কিছু স্থান সরিয়ে এটি 4 দ্বারা নামিয়ে আনছেন:f=lambda l:''.join('+-'[a<0]+str(a)[a<0:5*((abs(a)!=1)|(1>i))]+'x^'[:i]+str(i)[:i-1]for i,a in zip(range(len(l)-1,-1,-1),l)if a).lstrip('+')or '0'
বেনজমিন

3

পার্ল 5 -a , 94 বাইট

($_=shift@F)&&push@a,@a*!/-/>0&&'+',@F?s/\b1\b//r:$_,@F>0&&'x',@F>1&&'^'.@F while@F;say@a?@a:0

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


চূড়ান্ত (ধ্রুবক) সহগ 1 বা -1 হয় সঠিকভাবে কাজ করছে বলে মনে হয় না।
nwellnhof

Dang। আমি এটি গল্ফ করার সময় অবশ্যই তা ভেঙে ফেলেছি। আরও কয়েকটি বাইট দিয়ে এটি স্থির করে নিন।
এক্সকালি


2

হাস্কেল , 166 163 বাইট

g s|l<-length s,v:w:r<-id=<<["- +"!!(1+signum m):(id=<<[show$abs m|abs m>1||e==0]++["x"|e>0]++['^':show e|e>1])|(e,m)<-zip[l-1,l-2..]s,m/=0]=[v|v>'+']++w:r|1<3="0"

এটি অনলাইন চেষ্টা করুন! ব্যবহারের উদাহরণ: g [0,-1,35,0]ফলন "-x^2+35x"


পূর্ববর্তী 166 বাইট সমাধান, যা কিছুটা ভাল পঠনযোগ্য:

0#n=show n
m#n=id=<<[show n|n>1]++"x":['^':show m|m>1]
m%0=""
m%n|n<0='-':m#(-n)|1<3='+':m#n
g s|l<-length s,v:m:r<-id=<<zipWith(%)[l-1,l-2..]s=[v|v>'+']++m:r|1<3="0"

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


2

রুবি , 111 বাইট

->a{i=a.size;s=a.map{|x|i-=1;"%+d"%x+[?x,"x^#{i}",""][i<=>1]if x!=0}*'';s[0]?s.gsub(/(?<!\d)1(?=x)|^\+/,""):?0}

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

এটি রুবিতে সমাধান করা কিছুটা হতাশার কারণ হয়ে দাঁড়িয়েছে, মূলত এই কারণেই যে রুবিতে প্রায় (প্রায়) সমস্ত কিছু সত্যবাদী, যার মধ্যে 0-s এবং খালি স্ট্রিং রয়েছে, যাতে শূন্যের জন্য একটি সাধারণ চেক এমনকি কোথাও কোথাও না যায় due হিসাবে সংক্ষিপ্ত x?

আমি স্ট্রিংটি নির্মাণের বিভিন্ন পদ্ধতির সাথে খেলেছি এবং শেষ পর্যন্ত বেশ কয়েকটি পদ্ধতির মিশ্রণে স্থির হয়েছি:

  • 0 সহগের সাথে শর্তাবলী একটি সাধারণ শর্তসাপেক্ষে বাদ দেওয়া হয়
  • +এবং -লক্ষণগুলি বাধ্যতামূলক চিহ্ন সহ সিনট্যাক্স ফর্ম্যাট করে উত্পাদিত হয়:%+d
  • সঠিক ফর্ম বা x^iরকেট অপারেটর সূচক ব্যবহার করে নির্বাচন করা হয়েছে[...][i<=>1]
  • শীর্ষস্থানীয় + এবং অপ্রয়োজনীয় 1-গুলি রিজেক্স প্রতিস্থাপনের দ্বারা সরানো হয়

2

হুশ , 44 43 41 40 বাইট

|s0Ψf¤|□ṁ`:'+f¹zμ+↓s²_&ε²¹↑□¹+"x^"s)¹m←ṡ

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

এটি কিছুটা ক্লিনকি অনুভব করে; স্ট্রিং ম্যানিপুলেশনের জন্য হুস্ট অনুকূল নয়। আমি স্ট্যাক্স উত্তর থেকে কিছু ধার ধার নিয়েছি ।

ব্যাখ্যা

         Implicit input, say L = [2,-3,0,-1].
         First we compute the exponents.
ṡ        Reversed indices: [4,3,2,1]
m←       Decrement each: [3,2,1,0]
         Then we format the individual terms of the polynomial.
zμ...)¹  Zip with L using two-argument lambda:
          Arguments are coefficient and index, say C = -3 and I = 2.
+"x^"s    Convert I to string and concatenate to "x^": "x^2"
↑□¹       Take first I*I characters (relevant when I = 0 or I = 1): "x^2"
_&ε²¹     Check if abs(C) <= 1 and I != 0, negate; returns -1 if true, 0 if false.
↓s²       Convert C to string and drop that many elements (from the end, since negative).
          Result: "-3"
          The drop is relevant if C = 1 or C = -1.
+         Concatenate: "-3x^2"
         Result of zipping is ["2x^3","-3x^2","x","-1"]
f¹       Keep those where the corresponding element of L is nonzero: ["2x^3","-3x^2","-1"]
         Next we join the terms with + and remove extraneous +s.
ṁ        Map and concatenate
`:'+      appending '+': "2x^3+-3x^2+-1+"
Ψf       Adjacent filter: keep those chars A with right neighbor B
¤|□       where at least one of A or B is alphanumeric: "2x^3-3x^2-1"
|s0      Finally, if the result is empty, return "0" instead.

2

পার্ল 6 , 97 বাইট

{$!=+$_;.map({('+'x?($_&&$++&$_>0)~.substr(--$!&&2>.abs)~(<<''x>>[$!]//'x^'~$!))x?$_}).join||'0'}

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

ব্যাখ্যা:

$!=+$_;

$! বর্তমান ব্যয়কারীর উপর নজর রাখে।

'+'x?($_&&$++&$_>0)

+ইতিবাচক সহগের পূর্বে যুক্ত করুন , এটি যদি প্রথম শূন্য নয়। $_&&শর্ট সার্কিট নিশ্চিত করুন যে বেনামী রাষ্ট্র পরিবর্তনশীল তোলে $শুধুমাত্র নন-জিরো কোফিসিয়েন্টস জন্য বৃদ্ধি করা হয়। &যখন সঙ্গে bool করতে বাধ্য মোড় সঙ্কুচিত করা হয় ?

.substr(--$!&&2>.abs)

হ্রাস $!। ধ্রুবক না থাকলে 1 বা -1 সহগ কেটে দিন।

<<''x>>[$!]//'x^'~$!

বিশেষ ক্ষেত্রে লিনিয়ার এবং ধ্রুবক পদ। উদ্ধৃতি-সুরক্ষা << >> নির্মাণ ব্যবহার করা সমতুল্য ('','x')বা এর চেয়ে এক বাইট কম 2>$!??'x'x$!!!'x^'~$!

x?$_

শূন্য শর্তাবলী লুকান, তবে --$!পার্শ্ব প্রতিক্রিয়াটির জন্য সর্বদা পূর্বের প্রকাশটি মূল্যায়ন করুন ।

||'0'

0সমস্ত সহগুণ শূন্য হলে ফিরে আসুন ।


2

জাভা 8, 202 176 174 173 বাইট

a->{String r="";int j=a.length;for(int i:a)r+=i==0*j--?"":"+"+i+(j<1?"":j<2?"x":"x^"+j);return r.isEmpty()?"0":r.substring(1).replace("+-","-").replaceAll("(\\D)1x","$1x");}
  • 26 বাইট @ নেভায়ে ধন্যবাদ ।

ব্যাখ্যা:

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

a->{                     // Method with String-array parameter and String return-type
  String r="";           //  Result-String, starting empty
  int j=a.length;        //  Power-integer, starting at the size of the input-array
  for(int i:a)           //  Loop over the array
    r+=i==0              //   If the current item is 0
           *j--?         //   (And decrease `j` by 1 at the same time)
        ""               //    Append the result with nothing
       :                 //   Else:
        "+"              //    Append the result with a "+",
        +i               //    and the current item,
        +(j<1?           //    +If `j` is 0:
           ""            //      Append nothing more
          :j<2?          //     Else-if `j` is 1:
           "x"           //      Append "x"
          :              //     Else:
           "x^"+j);      //      Append "x^" and `j`
  return r.isEmpty()?    //  If `r` is still empty
    "0"                  //   Return "0"
   :                     //  Else:
    r.substring(1)       //   Return the result minus the leading "+",
     .replace("+-","-")  //   and change all occurrences of "+-" to "-",
     .replaceAll("(\\D)1x","$1x");}
                         //   and all occurrences of "1x" to "x"

1
176 বাইট:a->{String r="";int j=a.length;for(int u:a)r+=u==(j^j--)?"":"+"+u+(j<1?"":j<2?"x":"x^"+j);return r.isEmpty()?"0":r.substring(1).replace("+-","-").replaceAll("([+-])1x","$1x");}
নেভায়ে

1
@ নেভায়ে আমি কেবল এখন বুঝতে পারি সমস্ত ইনপুট পূর্ণসংখ্যা .. আমি একটি স্ট্রিং-ইনপুট ব্যবহার করেছি কারণ আমি ভেবেছিলাম যে দশমিক ইনপুটগুলিকেও অনুমতি দেওয়া হয়েছে ..>।> যাইহোক, -26 বাইটের জন্য ধন্যবাদ। এবং আমি পরিবর্তন (j^j--)করে আরও 2 গল্ফ করতে সক্ষম হয়েছি 0*j--
কেভিন ক্রুইজসেন

2

পাইথন, 165 বাইট

lambda a:"".join([("+"if c>0 and i+1<len(a)else"")+(str(c)if i==0 or abs(c)!=1 else "")+{0:"",1:"x"}.get(i,"x^"+str(i))for i,c in enumerate(a[::-1])if c][::-1])or"0"

1

পিএইচপি, 213 বাইট

$p=0;for($i=count($a=array_reverse(explode(',',trim($argv[1],'[]'))))-1;$i>=0;$i--)if(($b=(float)$a[$i])||(!$i&&!$p)){$k=abs($b);echo ($b<0?'-':($p?'+':'')).((($k!=1)||!$i)?$k:'').($i>1?'x^'.$i:($i?'x':''));$p=1;}

কমান্ড লাইন আর্গুমেন্ট যেমন ওপি দ্বারা অনুরোধ করা হয়েছে (বন্ধনী এবং কমা সহ একক যুক্তি)।

সুন্দর মুদ্রণ এবং কিছু ব্যাখ্যা:

$p = false; /* No part of the polynomial has yet been printed. */
for ($i = count($a = array_reverse(explode(',',trim($argv[1],'[]')))) - 1; $i >= 0; $i--)
{
    $b = (float)$a[$i]; /* Cast to float to avoid -0 and numbers like 1.0 */
    if (($b != 0) or (($i == 0) and !$p)) /* Print, if $b != 0 or the constant if there is no part until here. */
    {
        $k = abs($b);
        echo ($b < 0 ? '-' : ( $p ? '+' : '')); /* Sign. The first sign is suppressed (if $p is false) if $b positive. */
        echo ((($k != 1) || ($i == 0)) ? $k : '');  /* Coefficient */
        echo ($i > 1 ? 'x^' . $i : (($i != 0) ? 'x' : ''));  /* x^3, x^2, x, constant with empty string. */
        $p = true; /* Part of the polynomial has been printed. */
    }
}

1

পাওয়ারশেল, 295 বাইট

$c=$args[0]
$p=$c.length-1
$i=0
$q=""
while($p -ge 0){$t="";$e="";$d=$c[$i];switch($p){0{$t=""}1{$t="x"}Default{$t="x^";$e=$p}}if($d-eq 0){$t=""}elseif($d-eq 1){$t="+$t$e"}elseif($d-eq-1){$t="-$t$e"}elseif($d-lt 0 -or$i -eq 0){$t="$d$t$e"}else{$t="+$d$t$e"}$q+=$t;$i++;$p--}if($q -eq""){$q=0}
$q
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.