দুটি পূর্ণসংখ্যার বহুগুণকে গুণিত করুন


14

আপনার কাজটি হ'ল দুটি একক-পরিবর্তনশীল পূর্ণসংখ্যার বহুপদী অভিব্যক্তি গ্রহণ এবং তাদের অসম্পূর্ণ প্রথম-মেয়াদী-প্রধান বাম-থেকে-ডান বিস্তারে (দ্বিপদীগুলির ক্ষেত্রে একে ফয়েল ) গুন করা । পদগুলির মতো একত্রিত করবেন না বা ফলাফলটিকে পুনরায় অর্ডার করুন। সম্প্রসারণ সম্পর্কে আরও সুস্পষ্ট হয়ে ওঠার জন্য, প্রথম প্রকাশের প্রথম পদটি প্রতিটি শব্দকে দ্বিতীয়টিতে, ক্রমানুসারে গুন করুন এবং সমস্ত পদ সমস্ত অন্যান্য শর্ত দ্বারা গুণিত না হওয়া পর্যন্ত প্রথম প্রকাশে চালিয়ে যান। সরলিকৃত লটেক্স ভেরিয়েন্টে এক্সপ্রেশন দেওয়া হবে।

প্রতিটি অভিব্যক্তি শর্তগুলির দ্বারা পৃথক পৃথক হবে +(প্রতিটি পক্ষের ঠিক একই স্থান সহ) প্রতিটি শব্দটি নিম্নলিখিত নিয়মিত অভিব্যক্তিতে মেনে চলবে: (পিসিআরই স্বরলিপি)

-?\d+x\^\d+

সরল ইংরেজিতে শব্দটি হ'ল optionচ্ছিক নেতৃত্ব এবং -তারপরে এক বা একাধিক অঙ্ক xএবং তার পরে একটি অ-সংকেত পূর্ণসংখ্যা শক্তি (সহ ^)

সম্পূর্ণ প্রকাশের একটি উদাহরণ:

6x^3 + 1337x^2 + -4x^1 + 2x^0

ল্যাটেক্সে প্লাগ ইন করা অবস্থায় আপনি 6x3+1337x2+4x1+2x0

আউটপুট এছাড়াও এই ফর্ম্যাট অনুসারে করা উচিত।

যেহেতু বন্ধনীগুলি এই ফর্ম্যাটে এক্সপোঞ্জারকে ঘিরে না, তাই ল্যাটেক্স প্রকৃতপক্ষে ভুলভাবে বহু-অঙ্কের এক্সটেন্ডারগুলি সরবরাহ করবে। (যেমন 4 x 3 + - 2 x 1 4 + 54 x 2 8 + - 4 x 54x^3 + -2x^14 + 54x^28 + -4x^5 হিসাবে রেন্ডার করে ) আপনার এটির জন্য অ্যাকাউন্ট করার দরকার নেই এবং আপনার আউটপুটে বন্ধনী অন্তর্ভুক্ত করা উচিত নয়4এক্স3+ +-2এক্স14+ +54এক্স28+ +-4এক্স5

উদাহরণ পরীক্ষার ক্ষেত্রে

5x^4
3x^23

15x^27

6x^2 + 7x^1 + -2x^0
1x^2 + -2x^3

6x^4 + -12x^5 + 7x^3 + -14x^4 + -2x^2 + 4x^3

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

9x^1 + 15x^2 + 6x^4 + 9x^0

4x^3 + -2x^14 + 54x^28 + -4x^5
-0x^7

0x^10 + 0x^21 + 0x^35 + 0x^12

4x^3 + -2x^4 + 0x^255 + -4x^5
-3x^4 + 2x^2

-12x^7 + 8x^5 + 6x^8 + -4x^6 + 0x^259 + 0x^257 + 12x^9 + -8x^7

বিধি এবং অনুমান

  • আপনি ধরে নিতে পারেন যে সমস্ত ইনপুটগুলি এই সঠিক বিন্যাসের সাথে সঙ্গতিপূর্ণ। এই চ্যালেঞ্জের উদ্দেশ্যে অন্য যে কোনও বিন্যাসের আচরণ অপরিজ্ঞাত।
    • এটি লক্ষ করা উচিত যে দুটি বহুপদী গ্রহণের যে কোনও পদ্ধতি বৈধ, তবে উভয়ই উপরের ফর্ম্যাট অনুসারে স্ট্রিং হিসাবে পড়ে are
  • পণ্য সম্প্রসারণের প্রত্যাশিত আদেশের কারণে বহুবচনগুলির ক্রমটি বিবেচনা করে।
  • আপনি মধ্যে ইনপুট কোফিসিয়েন্টস সমর্থন করতে হবে -128 এবং 127 পর্যন্ত এবং ইনপুট বহিঃপ্রকাশ 255
    • মধ্যে আউটপুট coefficents -16,256 এবং 16,384 এবং আপ বহিঃপ্রকাশ 510 অতএব সমর্থিত হতে হবে।
  • আপনি ধরে নিতে পারেন প্রতিটি ইনপুট বহুপদীতে 16 টিরও বেশি শর্তাদি নেই
    • সুতরাং আপনাকে আউটপুটে 256 টি শর্ত অবধি অবশ্যই সমর্থন করতে হবে (সর্বনিম্ন)
  • শূন্য সহগের সাথে শর্তাবলী যেমন হয় তেমনি রেখে দেওয়া উচিত, ক্ষতিকারকগুলি সঠিকভাবে একত্রিত হওয়ার সাথে
  • ইনপুটটিতে নেতিবাচক শূন্য অনুমোদিত, তবে শব্দার্থকভাবে ইতিবাচক শূন্য থেকে পৃথক করা যায়। সর্বদা আউটপুট ইতিবাচক শূন্য। শূন্য পদটি বাদ দিবেন না।

শুভ গল্ফিং! শুভকামনা!



2
@ লুইসফেলিপ ডেজেসাস মুনোজ আমি কল্পনা করি না। পার্সিং চ্যালেঞ্জের একটি অবিচ্ছেদ্য অঙ্গ এবং ওপি বলেছে - "এটি অবশ্যই লক্ষ করা উচিত যে দুটি বহুপদী গ্রহণের যে কোনও পদ্ধতিই বৈধ, যদি উভয়কে উপরের ফর্ম্যাট অনুসারে স্ট্রিং হিসাবে পড়তে হয়। " (জোর যুক্ত করা হয়েছে)
জিউসেপে

উত্তর:


4

আর , 159 153 148 বাইট

function(P,Q,a=h(P),b=h(Q))paste0(b[1,]%o%a[1,],"x^",outer(b,a,"+")[2,,2,],collapse=" + ")
h=function(s,`/`=strsplit)sapply(el(s/" . ")/"x.",strtoi)

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

আমি সত্যিই ব্যবহার করতে চেয়েছিলাম outer, তাই প্রায় অবশ্যই আরও কার্যকর পদ্ধতির আছে।


4

হাস্কেল , 131 122 বাইট

(%)=drop
f s=do(a,t)<-reads s;(i,u)<-reads$2%t;(a,i):f(3%u)
p!q=3%do(a,i)<-f p;(b,j)<-f q;" + "++shows(a*b)"x^"++show(i+j)

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

fএকটি স্ট্রিং থেকে বহুভুজ পার্স করে, এর মধ্যে !দুটিকে গুণ করে এবং ফলাফলকে ফর্ম্যাট করে।

এইচপিউইজ 9 টি বাইট সংরক্ষণ করেছে। ধন্যবাদ!

Ungolfed

type Monomial = (Int, Int) -- a^i
type Polynomial = [Monomial]

parse :: String -> Polynomial
parse s = do (a, s')  <- reads s
             (i, s'') <- reads (drop 2 s')
             (a, i) : parse (drop 3 s'')

(!) :: String -> String -> String
p!q = drop 3 (concat terms)
  where terms    = [term (a*b) (i+j) | (a,i) <- p', (b,j) <- q']
        term a i = concat [" + ", show a, "x^", show i]
        p'       = parse p
        q'       = parse q



2

রুবি , 102 100 98 বাইট

->a,b{a.scan(w=/(.*?)x.(\d+)/).map{|x|b.scan(w).map{|y|(eval"[%s*(z=%s;%s),z+%s]"%y+=x)*"x^"}}*?+}

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

কিভাবে?

প্রথম পদক্ষেপ: উভয় বহুপদী থেকে সমস্ত সংখ্যা পান: scanজোড় স্ট্রিংগুলির একটি অ্যারের হিসাবে সংখ্যাগুলি প্রদান করে। তারপরে, 2 তালিকার একটি কার্টেসিয়ান পণ্য করুন। এখন আমাদের কাছে সমস্ত সংখ্যা রয়েছে যেখানে আমাদের তাদের প্রয়োজন, তবে এখনও ভুল ক্রমে।

উদাহরণ: আমরা সংখ্যাবৃদ্ধি যদি 3x^4দ্বারা -5x^2, আমরা নম্বর পেতে যেমন [["3","4"],["-5","2"]], প্রথম ধারণা zip করার ছিল এবং এই তালিকা চেপ্টা, এবং তারপর একটি অভিব্যক্তি হিসাবে মূল্যায়ন করা মধ্যে সংখ্যার করা [3*-5, 4+2]। প্রকৃতপক্ষে, আমাদের সংখ্যাগুলি পুনঃক্রম করতে হবে না, আমরা একটি অস্থায়ী পরিবর্তনশীল ব্যবহার করে এক্সপ্রেশনটির ভিতরে এটি করতে পারি: এক্সপ্রেশন হয়ে যায় [3*(z=4,-5),z+2]

এই এক্সপ্রেশনগুলি মূল্যায়ন করার পরে, আমরা সহগ এবং ঘনিষ্টর পাই, আমাদের তাদের ব্যবহার করে "x^"যোগ দিতে হবে, এবং তারপরে সমস্ত টেমে ব্যবহার করে যোগ দিতে হবে "+"


2

হাস্কেল, 124 121 বাইট

import Data.Lists
f!x=map f.splitOn x
z=read!"x^"!"+"
a#b=drop 3$do[u,v]<-z a;[p,q]<-z b;" + "++shows(u*p)"x^"++show(v+q)

দ্রষ্টব্য: টিআইওর অভাব রয়েছে Data.Lists, তাই আমি আমদানি করি Data.Lists.Splitএবং Data.List: অনলাইনে চেষ্টা করে দেখুন!

সম্পাদনা করুন: -3 বাইট @ লিনকে ধন্যবাদ।


এটি আসলে 123 বাইট! f!x=map f.splitOn xএবং তারপরে z=read!"x^"!"+"একটি বাইট সংরক্ষণ করে; শেষ লাইন জন্য drop 3$do[u,v]<-z a;[p,q]<-z b;" + "++shows(u*p)"x^"++show(v+q)আরও দুটি বাঁচায়। 120 বাইট
লিন

1
@ লিন: Data.Listপরিবর্তে টিআইও সংস্করণ আমদানি করে Data.Lists, সুতরাং এটি +1 বাইট।
নিমি



1

পাইথন 2 , 193 বাইট

import re
f=re.finditer
lambda a,b:' + '.join(' + '.join(`int(m.group(1))*int(n.group(1))`+'x^'+`int(m.group(2))+int(n.group(2))`for n in f('(-?\d+)x\^(\d+)',b))for m in f('(-?\d+)x\^(\d+)',a))

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

পার্শ্ব নোট: প্রথমবারের মতো একটি কোড গল্ফ চ্যালেঞ্জ করছে, তাই দুঃখিত যদি চেষ্টাটি হা হা করে ফেলে


3
পিপিসিজিতে আপনাকে স্বাগতম! আমি অজগর প্রোগ্রামার খুব বেশি না, তবে সম্ভবত উন্নতির কিছু জায়গা আছে। পাইথনে গল্ফিংয়ের টিপস বা <সমস্ত ভাষায়> গল্ফিংয়ের টিপসের সাহায্যে আপনি খুঁজে পেতে পারেন ! আশা করি আপনি এখানে ব্যয় করার সময়টি উপভোগ করবেন :-)
জিউস্পে


1
161 বাইটের জন্য কিছু দ্রুত গল্ফ করছে । যদিও অন্যান্য অজগর উত্তরগুলি খুঁজছেন, re.finditerসংক্ষিপ্ত পদ্ধতির নাও হতে পারে
জো কিং

1

রেটিনা , ১১০ বাইট

\S\S+(?=.*\n(.+))
 $1#$&
|" + "L$v` (-?)(\d+)x.(\d+).*?#(-?)(\d+)x.(\d+)
$1$4$.($2*$5*)x^$.($3*_$6*
--|-(0)
$1

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

\S\S+(?=.*\n(.+))
 $1#$&

প্রথম ইনপুট এ #, দ্বিতীয় ইনপুটের অনুলিপি এবং একটি স্পেস সহ প্রতিটি পদকে উপসর্গ করুন ix এর অর্থ হ'ল দ্বিতীয় ইনপুটটির অনুলিপিগুলিতে সমস্ত পদ একটি স্পেস দ্বারা পূর্ববর্তী এবং প্রথম ইনপুট থেকে শর্তগুলির কোনওটিই নয়।

|" + "L$v` (-?)(\d+)x.(\d+).*?#(-?)(\d+)x.(\d+)
$1$4$.($2*$5*)x^$.($3*_$6*

দ্বিতীয় ইনপুটটিতে শর্তাবলীর সমস্ত অনুলিপি এবং প্রথম ইনপুট থেকে তাদের সম্পর্কিত শব্দটির সাথে মেলে। যেকোন লক্ষণকে শক্ত করে তুলুন -, সহগকে গুণ করুন এবং সূচকগুলি যুক্ত করুন। পরিশেষে স্ট্রিং সহ ফলাফলের সমস্তটিতে যোগ দিন  + 

--|-(0)
$1

যে কোনও জোড়া মুছুন -এবং রূপান্তর -0করুন 0


1

SNOBOL4 (CSNOBOL4) , 192 176 বাইট

	P =INPUT
	Q =INPUT
	D =SPAN(-1234567890)
P	P D . K ARB D . W REM . P	:F(O)
	B =Q
B	B D . C ARB D . E REM . B	:F(P)
	O =O ' + ' K * C 'x^' W + E	:(B)
O	O ' + ' REM . OUTPUT
END

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

	P =INPUT				;* read P
	Q =INPUT				;* read Q
	D =SPAN(-1234567890)			;* save PATTERN for Digits (or a - sign); equivalent to [0-9\\-]+
P	P D . K ARB D . W REM . P	:F(O)	;* save the Koefficient and the poWer, saving the REMainder as P, or if no match, goto O
	B =Q					;* set B = Q
B	B D . C ARB D . E REM . B	:F(P)	;* save the Coefficient and the powEr, saving the REMainder as B, or if no match, goto P
	O =O ' + ' K * C 'x^' W + E	:(B)	;* accumulate the output
O	O ' + ' REM . OUTPUT			;* match ' + ' and OUTPUT the REMainder
END



1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 192 190 বাইট

n=>m=>string.Join(g=" + ",from a in n.Split(g)from b in m.Split(g)select f(a.Split(p="x^")[0])*f(b.Split(p)[0])+p+(f(a.Split(p)[1])+f(b.Split(p)[1])));Func<string,int>f=int.Parse;string p,g;

কোয়েরি সিনট্যাক্সটি পদ্ধতি সিনট্যাক্সের চেয়ে একটি বাইট কম খাটো বলে মনে হচ্ছে।

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


প্রতিটি অভিব্যক্তি শর্তগুলির ক্রম হবে + দ্বারা বিভক্ত (প্রতিটি পক্ষের ঠিক এক স্থান সহ) 190 বাইট
মেয়াদোত্তীর্ণ ডেটা

1

জেলি , 28 বাইট

ṣ”+ṣ”xV$€)p/ZPSƭ€j⁾x^Ʋ€j“ + 

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

পুরো প্রোগ্রাম। দুটি বহুত্বের দুটি স্ট্রিংয়ের তালিকা হিসাবে নেয়।

ব্যাখ্যা (প্রসারিত ফর্ম)

ṣ”+ṣ”xV$€µ€p/ZPSƭ€j⁾x^Ʋ€j“ + ” Arguments: x
         µ                     Monadic chain.
          €                    Map the monadic link over the argument.
                               Note that this will "pop" the previous chain, so
                               it will really act as a link rather than a
                               sub-chain.
ṣ”+                             ṣ, right = '+'.
                                Split the left argument on each occurrence of
                                the right.
                                Note that strings in Jelly are lists of
                                single-character Python strings.
        €                       Map the monadic link over the argument.
       $                         Make a non-niladic monadic chain of at least
                                 two links.
   ṣ”x                            ṣ, right = 'x'.
                                  Split the left argument on each occurrence of
                                  the right.
      V                           Evaluate the argument as a niladic link.
            /                  Reduce the dyadic link over the argument.
           p                    Cartesian product of left and right arguments.
                       €       Map the monadic link over the argument.
                      Ʋ         Make a non-niladic monadic chain of at least
                                four links.
             Z                   Transpose the argument.
                 €               Map the monadic link over the argument.
                ƭ                 At the first call, call the first link. At the
                                  second call, call the second link. Rinse and
                                  repeat.
              P                    Product: ;1×/$
               S                   Sum: ;0+/$
                  j⁾x^           j, right = "x^".
                                 Put the right argument between the left one's
                                 elements and concatenate the result.
                        j“ + ” j, right = " + ".
                               Put the right argument between the left one's
                               elements and concatenate the result.

aliasing

)হিসাবে একই µ€
একটি অনুবর্তন নিহিত এবং বাদ দেওয়া যেতে পারে।

অ্যালগরিদম

ধরা যাক আমাদের এই ইনপুটটি পেয়েছে:

["6x^2 + 7x^1 + -2x^0", "1x^2 + -2x^3"]

প্রথম পদ্ধতিটি পার্সিং, দুটি বহুভুজের প্রতিটিতে প্রয়োগ করা হয়। আসুন প্রথমটি পরিচালনা করি "6x^2 + 7x^1 + -2x^0":

প্রথম পদক্ষেপটি স্ট্রিংকে বিভক্ত করা হয় '+', যাতে শর্তগুলি পৃথক করা যায়। এর ফলে:

["6x^2 ", " 7x^1 ", " -2x^0"]

পরবর্তী পদক্ষেপটি প্রতিটি স্ট্রিংকে বিভক্ত করা হয় 'x', ঘনক থেকে গুণককে আলাদা করতে। ফলাফল এটি:

[["6", "^2 "], [" 7", "^1 "], [" -2", "^0"]]

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

[["6", "^2"], ["7", "^1"], ["-2", "^0"]]

^গুলি একটি বিট আরো ধকল চেহারা, কিন্তু তারা আসলে হয় কিছু করতে হবে না! ঠিক আছে, ^বিটওয়াইজ এক্সওআর পরমাণু, তবে নীলাদিক শৃঙ্খলাগুলি মোনাডিক লিঙ্কগুলির মতো কাজ করে, প্রথম লিংকটি আসলে যুক্তি হিসাবে পরিবর্তিত হয়, যদি এটি নীলাডিক হয় তবে। যদি এটি না হয়, তবে লিঙ্কটির একটি যুক্তি থাকবে 0। অভিজাতদের ^প্রথম চর হিসাবে এটি রয়েছে এবং ^নীলাদিক নয়, তাই যুক্তি হিসাবে ধরে নেওয়া হয় 0। স্ট্রিং বাকি, সংখ্যা অর্থাৎ ডান যুক্তি ^। সুতরাং, উদাহরণস্বরূপ, ^2হয়0 XOR যাও 2=2। একথাও ঠিক যে,0 XOR যাও এন=এন। সমস্ত অভিযাত্রী পূর্ণসংখ্যা, তাই আমরা ভাল are সুতরাং, উপরের পরিবর্তে এটি মূল্যায়ন করলে ফলাফল পরিবর্তন হবে না:

[["6", "2"], ["7", "1"], ["-2", "0"]]

এখানে আমরা যাচ্ছি:

[[6, 2], [7, 1], [-2, 0]]

এই ধাপে আরো রূপান্তর করবে "-0"করার 0

যেহেতু আমরা উভয় ইনপুট পার্সিং করছি তাই পার্সিংয়ের পরে ফলাফলটি এটি হতে চলেছে:

[[[6, 2], [7, 1], [-2, 0]], [[1, 2], [-2, 3]]]

পার্সিংটি এখন সম্পূর্ণ। পরবর্তী প্রক্রিয়াটি হ'ল গুণ (গুণ)।

আমরা প্রথমে এই দুটি তালিকার কার্টেসিয়ান পণ্যটি নিই:

[[[6, 2], [1, 2]], [[6, 2], [-2, 3]], [[7, 1], [1, 2]], [[7, 1], [-2, 3]], [[-2, 0], [1, 2]], [[-2, 0], [-2, 3]]]

বাম তালিকা থেকে একটি উপাদান এবং ডান থেকে একটি করে ক্রমে অনেকগুলি জোড়া তৈরি করা হয়। এটি আউটপুটটির উদ্দেশ্যযুক্ত ক্রম হিসাবেও ঘটে। এই চ্যালেঞ্জটি সত্যই আমাদের গুণক বিতরণ প্রয়োগ করতে বলে, কারণ আমরা এর পরে ফলাফলটি আরও প্রক্রিয়া না করতে বলেছি।

প্রতিটি জোড়ের জোড়গুলি এমন পদগুলিকে উপস্থাপন করে যা আমরা গুণ করতে চাই, যার সাথে প্রথম উপাদানটি সহগ হয় এবং দ্বিতীয়টি ঘনিষ্ঠ হয়। শর্তগুলিকে গুণিত করতে, আমরা সহগকে গুণিত করব এবং এক্সটেনশনগুলি একসাথে যুক্ত করব (একটিএক্সএক্স=একটিএক্সএক্স=একটি(এক্সএক্স)=(একটি)এক্স+ +)। আমরা যে কিভাবে করব? আসুন দ্বিতীয় যুগলটি পরিচালনা করি [[6, 2], [-2, 3]],।

আমরা প্রথমে জোড়াটি স্থানান্তর করি:

[[6, -2], [2, 3]]

তারপরে আমরা প্রথম জুটির পণ্য এবং দ্বিতীয়টির যোগফল নিয়ে থাকি:

[-12, 5]

কোডটির প্রাসঙ্গিক অংশটি PSƭ€প্রতিটি শর্তাদির জন্য প্রকৃতপক্ষে এর কাউন্টারটিকে পুনরায় সেট করে না, তবে তারা যেহেতু জোড়া, তাই এটির দরকার নেই।

সমস্ত জোড়া শর্তাদি পরিচালনা, আমাদের কাছে রয়েছে:

[[6, 4], [-12, 5], [7, 3], [-14, 4], [-2, 2], [4, 3]]

এখানে, গুণগুলি সম্পন্ন হয়েছে, কারণ আমাদের মতো পদগুলি একত্রিত করতে হবে না। চূড়ান্ত পদ্ধতিটি হ'ল প্রিট্টিফাইং।

আমরা প্রথম প্রতিটি জোড় এর সাথে যোগদান করি "x^":

[[6, 'x', '^', 4], [-12, 'x', '^', 5], [7, 'x', '^', 3], [-14, 'x', '^', 4], [-2, 'x', '^', 2], [4, 'x', '^', 3]]

তারপরে আমরা এই তালিকায় যোগ দেব " + ":

[6, 'x', '^', 4, ' ', '+', ' ', -12, 'x', '^', 5, ' ', '+', ' ', 7, 'x', '^', 3, ' ', '+', ' ', -14, 'x', '^', 4, ' ', '+', ' ', -2, 'x', '^', 2, ' ', '+', ' ', 4, 'x', '^', 3]

লক্ষ করুন যে তালিকায় আমরা কীভাবে এখনও নম্বর পেয়েছি, সুতরাং এটি আসলে স্ট্রিং নয়। যাইহোক, জেলি "স্ট্রিংফিকেশন" নামে একটি প্রক্রিয়া আছে, ফলাফল প্রিন্ট আউট করার জন্য একটি প্রোগ্রাম কার্যকর করার শেষে ডানদিকে দৌড়ে। গভীরতা 1 এর তালিকার জন্য, এটি প্রতিটি উপাদানকে তার স্ট্রিং উপস্থাপনে সত্যই রূপান্তরিত করে এবং স্ট্রিংগুলিকে একসাথে যুক্ত করে, তাই আমরা পছন্দসই আউটপুটটি পাই:

6x^4 + -12x^5 + 7x^3 + -14x^4 + -2x^2 + 4x^3

1

জাভাস্ক্রিপ্ট, 112 110 বাইট

আমি একই দৈর্ঘ্যের দুটি বিকল্প পেয়েছি। কারিটিং সিনট্যাক্স সহ কল ​​করুন:f(A)(B)

A=>B=>(P=x=>x.split`+`.map(x=>x.split`x^`))(A).flatMap(a=>P(B).map(b=>a[0]*b[0]+'x^'+(a[1]- -b[1]))).join` + `

A=>B=>(P=x=>x.split`+`.map(x=>x.split`x^`))(A).flatMap(([c,e])=>P(B).map(([C,E])=>c*C+'x^'+(e- -E))).join` + `

-2 বাইট ( লুইস ): splitডিলিমিটারের চারপাশে ফাঁকা স্থান সরিয়ে ফেলুন ।


জাভাস্ক্রিপ্ট, 112 বাইট

ব্যবহার String.prototype.matchAll

A=>B=>(P=x=>[...x.matchAll(/(\S+)x.(\S+)/g)])(A).flatMap(a=>P(B).map(b=>a[1]*b[1]+'x^'+(a[2]- -b[2]))).join` + `


1
split' + ' => split'+'2 বাইট সংরক্ষণ করতে
লুইস ফিলিপ দে জেসুস মুনোজ


অ্যাম্বোডিমেন্টফ অজানা আমার খারাপ, আমি লুইসের মন্তব্য ভুলভাবে পড়েছি। আমি ভেবেছিলাম এটি সম্পর্কে join
আর্নৌল্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.