সাধারণত, আমরা প্রতিটি সংখ্যার 2
0
বা পাওয়ার সহ ক্ষমতা সহ1
নির্ধারিত করে বাইনারি অঙ্কগুলিতে একটি সংখ্যাকে বিভক্ত করি :
25 = 1*16 + 1*8 + 0*4 + 0*2 + 1*1
পছন্দ
0
এবং1
হয় ... খুব বাইনারি না। আমরা 2 এর ক্ষমতার সাথে প্রসারিত করে সত্য বাইনারি প্রসারণ সম্পাদন করব , তবে এর গুণক1
বা-1
পরিবর্তে:
25 = 1*16 + 1*8 + 1*4 - 1*2 - 1*1
এখন এটি বাইনারি দেখাচ্ছে।
যে কোনও ধনাত্মক সংখ্যা দেওয়া আছে তা দেখার জন্য এটি তুচ্ছ হওয়া উচিত:
- প্রতিটি বিজোড় সংখ্যার অসীম অনেকগুলি সত্য বাইনারি প্রসার থাকে
- প্রত্যেকটি সংখ্যার কোনও সত্যই বাইনারি সম্প্রসারণ নেই
সুতরাং, সত্যিকারের বাইনারি প্রসারণটি সু-সংজ্ঞায়িত করার জন্য, আমাদের সম্প্রসারণটি সর্বনিম্ন হওয়া দরকার , অর্থাৎ সবচেয়ে কম দৈর্ঘ্যের সাথে।
যেকোন ধনাত্মক, বিজোড় পূর্ণসংখ্যা দেওয়া n
, এর সত্য বাইনারি সম্প্রসারণকে সর্বাধিক উল্লেখযোগ্য অঙ্ক থেকে সর্বনিম্ন উল্লেখযোগ্য অঙ্কে (অথবা বিপরীত ক্রমে) ফিরুন।
নিয়মাবলী:
- এই যেমন কোড-গলফ, আপনার পক্ষে লক্ষ্যটি করা উচিত সম্ভাব্যতম সংক্ষিপ্ততম বাইট গণনায় এটি করা। বিল্টিনগুলি অনুমোদিত।
- সহগের প্রতিনিধিত্ব করতে এবং তালিকাভুক্ত করতে পারে এমন যে কোনও আউটপুট গ্রহণযোগ্য: একটি অ্যারে, বিভাজকগুলির সহ সহগের একটি স্ট্রিং ইত্যাদি ...
- স্ট্যান্ডার্ড গল্ফিং লফোলগুলি প্রয়োগ হয়।
- আপনার প্রোগ্রামটির আপনার ভাষার স্ট্যান্ডার্ড পূর্ণসংখ্যার আকারের মানগুলির জন্য কাজ করা উচিত।
পরীক্ষার কেস
25 -> [1,1,1,-1,-1]
47 -> [1,1,-1,1,1,1]
1 -> [1]
3 -> [1,1]
1234567 -> [1,1,-1,-1,1,-1,1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,1]
0
পরিবর্তে -1
কম ভোল্টেজ রাষ্ট্রপক্ষে। বিটগুলি গ্রহণকারী কলকারী তাদের অর্থ কী তা জানে। (এটি একটি অ-তুচ্ছ বিট-ম্যানিপুলেশন ব্যায়াম থেকে ঘোরান ডান কেবলমাত্র তখনই কাজ যদি এটা 32 উল্লেখযোগ্য বিট আছে এখনও যেমন একটি 5-বিট সংখ্যা 5. একটি ঘোরান প্রস্থ প্রয়োজন।)
111-1-1
জন্য একটি বৈধ আউটপুট 25
?