পটভূমি
দশমিক, বাইনারি, হেক্সাডেসিমাল, অক্টাল: এখানকার বেশিরভাগ লোককে কয়েকটি পূর্ণসংখ্যার বেস সিস্টেমগুলির সাথে পরিচিত হওয়া উচিত। উদাহরণস্বরূপ, হেক্সাডেসিমাল সিস্টেমে, একটি সংখ্যা abc.de 16 উপস্থাপন করবে
a*16^2 + b*16^1 + c*16^0 + d*16^-1 + e*16^-2
তবে, কেউ অযৌক্তিক সংখ্যার মতো অ-পূর্ণসংখ্যার ঘাঁটিও ব্যবহার করতে পারে। এই জাতীয় বেস একবারে স্বর্ণের অনুপাত uses = (1 + √5) / 2 ≈ 1.618 ... ব্যবহার করে । এগুলি পূর্ণসংখ্যা বেসগুলিতে অ্যানালগালিভাবে সংজ্ঞায়িত করা হয়। সুতরাং একটি সংখ্যা abc.de φ (যেখানে একটি থেকে ই পূর্ণসংখ্যার সংখ্যা হয়) উপস্থাপন করবে
a*φ^2 + b*φ^1 + c*φ^0 + d*φ^-1 + e*φ^-2
নোট করুন যে নীতিগতভাবে কোনও অঙ্কই নেতিবাচক হতে পারে (যদিও আমরা এর সাথে অভ্যস্ত নই) - আমরা একটি শীর্ষস্থানীয় সহ একটি নেতিবাচক অঙ্ক উপস্থাপন করব ~
। এই প্রশ্নের আমরা থেকে সংখ্যায় পর্যবসিত নিজেদেরকে সীমাবদ্ধ উদ্দেশ্য পূরণকল্পে ~9
করতে 9
, তাই আমরা unambiguously (মাঝে টিলড চিহ্ন সহ) এক স্ট্রিং হিসেবে একটি সংখ্যা লিখতে পারেন। সুতরাং
-2*φ^2 + 9*φ^1 + 0*φ^0 + -4*φ^-1 + 3*φ^-2
হিসাবে লেখা হবে ~290.~43
। আমরা এই জাতীয় সংখ্যাকে একটি ফিনারি নম্বর বলে থাকি ।
একটি ফিনারি নম্বর সর্বদা স্ট্যান্ডার্ড আকারে উপস্থাপন করা যায় , যার অর্থ প্রতিনিধিত্ব কেবলমাত্র অঙ্কগুলি ব্যবহার করে 1
এবং কোথাও 0
না রেখে এবং and চ্ছিক 11
বিয়োগ চিহ্ন সহ পুরো সংখ্যাটি নেতিবাচক তা নির্দেশ করে to (মজার বিষয় হল, প্রতিটি পূর্ণসংখ্যার স্ট্যান্ডার্ড আকারে একটি অনন্য সীমাবদ্ধ প্রতিনিধিত্ব রয়েছে))
প্রতিনিধিত্বগুলি যা মান আকারে নেই নীচের পর্যবেক্ষণগুলি ব্যবহার করে সর্বদা স্ট্যান্ডার্ড আকারে রূপান্তর করা যেতে পারে:
- 011 φ = 100 φ (কারণ φ 2 = φ + 1)
- 0200 φ = 1001 φ (কারণ φ 2 + 1 / φ = 2φ)
- 0 ~ 10 φ = ~ 101 φ (কারণ φ - 1 / φ = 1)
এছাড়াও:
- যদি সর্বাধিক উল্লেখযোগ্য অঙ্কটি হয়
~1
(বাকী সংখ্যাটি স্ট্যান্ডার্ড ফর্ম হিসাবে থাকে), সংখ্যাটি নেতিবাচক হয়, এবং আমরা এটিকে সমস্ত অদলবদল করে1
এবং~1
, একটি বিয়োগ চিহ্নটি প্রস্তুত করে এবং উপরের তিনটি বিধি প্রয়োগ করে আমাদের অবধি পুনরায় প্রয়োগ করতে পারি স্ট্যান্ডার্ড ফর্ম প্রাপ্ত।
এই জাতীয়করণের উদাহরণ এখানে দেওয়া হয়েছে (প্রতিটি অঙ্কের অবস্থানটি সারিবদ্ধ রাখতে আমি ইতিবাচক অঙ্কগুলির জন্য অতিরিক্ত স্পেস ব্যবহার করছি):
1~3.2~1φ
1~3. 2~1φ Rule:
= 0~2. 3~1φ (3)
= ~1~1. 4~1φ (3)
= ~1 0 0. 4~1φ (3)
= ~1 0 0. 3 0 1φ (3)
= ~1 0 1. 1 0 2φ (2)
= ~1 1 0. 0 0 2φ (1)
= ~1 1 0. 0 1 0 0 1φ (2)
= - 1~1 0. 0~1 0 0~1φ (4)
= - 0 0 1. 0~1 0 0~1φ (3)
= - 0 0 1.~1 0 1 0~1φ (3)
= - 0 0 0. 0 1 1 0~1φ (3)
= - 0 0 0. 0 1 1~1 0 1φ (3)
= - 0 0 0. 0 1 0 0 1 1φ (3)
= - 0 0 0. 0 1 0 1 0 0φ (1)
ফলন ।-0.0101φ
আরও পড়ার জন্য, উইকিপিডিয়ায় এই বিষয়ে একটি খুব তথ্যমূলক নিবন্ধ রয়েছে।
চ্যালেঞ্জ
অতএব, বা অন্যথায়, একটি প্রোগ্রাম বা ফাংশন লিখুন যা কোনও ফিনারি সংখ্যার (যেমন উপরে বর্ণিত) প্রতিনিধিত্ব করে একটি স্ট্রিং প্রদান করে, তার শূন্যস্থানটি অগ্রণী বা জেরো ছাড়াই স্ট্যান্ডার্ড ফর্মটি দেয়। ইনপুটটিতে অগত্যা ফোনের পয়েন্ট থাকে না তবে সর্বদা এর বাম সংখ্যাটি থাকে (তাই না .123
)। আউটপুটটিতে সর্বদা বাইনারি পয়েন্ট এবং এর বামে কমপক্ষে একটি অঙ্ক অন্তর্ভুক্ত থাকতে হবে।
আপনি STDIN, ARGV বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিতে পারেন এবং হয় ফলাফলটি ফেরত দিতে পারেন বা এটি STDOUT এ মুদ্রণ করতে পারেন।
আপনি উপরোক্ত পদ্ধতির চেয়ে আলাদা অ্যালগরিদম ব্যবহার করতে পারবেন যতক্ষণ না এটি নীতিগতভাবে সালিসি (বৈধ) ইনপুটগুলির জন্য সঠিক এবং সঠিক - এটি হ'ল একমাত্র সীমা যা অন্তর্ভুক্তের আকারের মতো প্রযুক্তিগত সীমাবদ্ধতা হতে পারে ডেটা প্রকার বা উপলভ্য র্যাম। উদাহরণস্বরূপ, ভাসমান-পয়েন্ট নম্বর হিসাবে ইনপুটটি মূল্যায়ন এবং তারপরে লোভের সাথে অঙ্কগুলি বেছে নেওয়া অনুমোদিত নয়, কারণ যে কোনও ইনপুট খুঁজে পেতে পারে যার জন্য ভাসমান-পয়েন্টের ভুলগুলি ফলাফল তৈরি করতে পারে।
এটি কোড গল্ফ, সংক্ষিপ্ত উত্তর (বাইটে) জিতেছে।
পরীক্ষার মামলা
Input Output
1 1.
9 10010.0101
1.618 10000.0000101
1~3.2~1 -0.0101
0.~1021 0. (or -0.)
105.~2 1010.0101
~31~5.~1 -100000.1001