বিভক্ত-জটিল সংখ্যার , এছাড়াও "কিংকর্তব্যবিমূঢ় করা সংখ্যার" নামে পরিচিত জটিল সংখ্যার মতই। পরিবর্তে i^2 = -1
, তবে, আমাদের আছে j^2 = 1; j != +/-1
। প্রতিটি সংখ্যা রূপ নেয় z = x + j*y
।
এই চ্যালেঞ্জের জটিলতা সীমাবদ্ধ করার একটি প্রয়াসে, আমি প্রতীকটি -
অবহেলা উপস্থাপন করতে ব্যবহার করব , কারণ কোনও বিয়োগফল থাকবে না।
আপনার দেখার আনন্দের জন্য এখানে কয়েকটি উদাহরণ রয়েছে:
6 * 9 = 54 // real numbers still act normally
5 + -7 = -2
j*1 + j*1 = j*2 // two `j`s added together make a j*2
7 * j*1 = j*7 // multiplication is commutative & associative
j*1 + 2 = 2+j*1 // like oil and water, "combine" to form a split-complex number
j*1 + j*-3 = j*-2 // seems okay so far
j*j*1 = j*-1*j*-1 = 1 // kinda sketchy, but such is its inherent nature
j*j*-1 = j*-1*j*1 = -1
(2+j*3)+(4+j*7) = 6+j*10 // combine like terms
7 * (2+j*3) = 14+j*21 // distributive property
j * (2+j*3) = (j*2) + (j*j*3) = 3+j*2 // since j^2 = 1, multiplying my j "swaps" the coefficients
(2+j*3)*(4+j*7) = (2*4)+(2*j*7)+(j*3*4)+(j*3*j*7) = 8+j*14+j*12+21 = 29+j*26 // a complete multiplication
চ্যালেঞ্জ
এই চ্যালেঞ্জের লক্ষ্যটি হল স্প্লিট-জটিল সংখ্যার সাথে একটি অভিব্যক্তি মূল্যায়ন করা।
এটি কোড-গল্ফ, সবচেয়ে কম বাইট জেতা।
ইনপুট
ইনপুটটি একটি একক লাইন হবে যেখানে কেবলমাত্র প্রতীক +*()-
, অঙ্কগুলি 0123456789
এবং অক্ষর থাকবে j
anচ্ছিক নতুনলাইন। এই স্ট্রিংটি ইনফিক্স নোটেশন এবং অপারেটর অগ্রাধিকার (প্রথম সংখ্যার সাথে প্রথম বন্ধনী সহ) ব্যবহার করে একটি অভিব্যক্তি উপস্থাপন করে।
- প্রতীক
-
সর্বদা প্রত্যাখ্যান, কখনও বিয়োগকে উপস্থাপন করবে। আপনি যদি ইচ্ছা করেন তবে আপনি নিজের-
সাথে প্রতিস্থাপন করতে পারেন_
বা~
I / O এর স্বাচ্ছন্দ্যের জন্য। - গ্রুপিং বোঝাতে তিনবার পর্যন্ত প্যারেন্টেসিসকে বাসা বেঁধে দেওয়া যেতে পারে:
(1+(1+(1)))
- চিঠিটি
j
কখনই সরাসরি উপেক্ষার সাথে উপস্থাপিত হবে না এবং সর্বদা অনুসরণ করা হবে*
। - প্যারেন্টিহিসগুলি অগ্রাহ্যকরণের আগে নয়
-(7)
, বরং তার পরিবর্তে পছন্দ করবে-1*(j*5+2)
- অন্তর্নিহিত ক্রিয়াকলাপ কখনও হবে না। সকল গুণ হিসাবে প্রকাশ করা হবে না
(7)*7
পরিবর্তে(7)7
, এবংj*5
পরিবর্তেj5
। - কোনও নেতৃস্থানীয় জিরো নেই।
আউটপুট
আউটপুট আকারে হবে X+j*Y
, যেখানে এক্স এবং ওয়াই যে কোনও পূর্ণসংখ্যার হতে পারে। যদি কোনও পূর্ণসংখ্যা নেতিবাচক হয় তবে তা উপেক্ষা চিহ্ন সহ উপসর্গ করা উচিত।
অতিরিক্ত সীমাবদ্ধতা
যদিও আমি স্থানীয় সমর্থন সহ কোনও ভাষা সম্পর্কে অবগত নই, বিভক্ত-জটিল সংখ্যার সাথে সম্পর্কিত বিল্ট-ইনগুলি নিষিদ্ধ। নিয়মিত জটিল সংখ্যাগুলি সুষ্ঠু খেলা।
পরীক্ষার কেস
উপরোক্ত উদাহরণগুলির মতো, তবে পরিপাটি করা। এক লাইনে ইনপুট দিন এবং নীচের লাইনটি আউটপুট করুন।
(2+j*3)+(4+j*7)
6+j*10
(2+j*3)*(4+j*7)
29+j*26
(-5+j*1+j*2+2)*(4+j*7)
9+j*-9
(1+j*-1)*(1+j*1)
0+j*0 // this is why division does not exist.
j*((j*-1)+2)
-1+j*2
(2+(5+-1*(j*1))+2)
9+j*-1
j=[0 1; 1 0]
উপরের সারি থেকে গুণফলগুলি সহ অভিব্যক্তিটি মূল্যায়ন করতে এবং পড়তে পারে।