আপনি হঠাৎ করেই একদল গণিতবিদের সাক্ষাৎ পেয়ে গেছেন, যাঁরা একইসাথে গায়ক-গীতিকারও। তাঁরা তাঁদের প্রিয় প্রতিটি সংখ্যার জন্য একটি করে গান লিখেছেন, আর আপনি নিশ্চয়ই ভাবতে পারেন, তাঁদের প্রিয় সংখ্যার কোনো শেষ নেই (যেমন 0 বা 73 বা 6174)।
আপনার প্রিয় সংখ্যাটির গানটি শুনতে আপনার কৌতূহল হচ্ছে, কিন্তু এতগুলো গানের ভিড়ে সঠিক গানটি খুঁজে বের করতে বেশ কিছুটা সময় লেগে যেতে পারে। সৌভাগ্যবশত, তাঁরা তাঁদের গানগুলো শিরোনাম অনুযায়ী সাজিয়ে একটি প্লেলিস্ট তৈরি করেছেন। আর সেই শিরোনাম আসলে সেই সংখ্যাটিই, যে সংখ্যা নিয়ে গানটি লেখা।
আপনি বুঝতে পারেন, শিরোনাম জানা থাকলে বাইনারি সার্চ অ্যালগরিদম ব্যবহার করে দ্রুত গানটি খুঁজে বের করা যায়।
আপনার কাজ হলো একটি বাইনারি সার্চ অ্যালগরিদম বাস্তবায়ন করা।
একটি বাইনারি সার্চ অ্যালগরিদম অ্যারেটিকে বারবার অর্ধেক করে ভাগ করে, আর যে অর্ধেকে আমাদের খোঁজা আইটেমটি থাকে কেবল সেই অর্ধেক ধরে রেখে, অ্যারের মধ্যে একটি আইটেম খুঁজে বের করে। এটি আমাদের আইটেমটির সম্ভাব্য অবস্থানগুলো দ্রুত কমিয়ে আনতে সাহায্য করে, যতক্ষণ না আমরা সেটি খুঁজে পাই বা সম্ভাব্য সব অবস্থান বাদ দিয়ে ফেলি।
বাইনারি সার্চ কেবল তখনই কাজ করে যখন অ্যারেটি সাজানো থাকে।
অ্যালগরিদমটি দেখতে এমন:
এখানে একটি উদাহরণ:
ধরা যাক, আমরা নিচের সাজানো অ্যারেতে 23 সংখ্যাটি খুঁজছি: [4, 8, 12, 16, 23, 28, 32].
[23, 28, 32].[23].উপরের নির্দেশনা একটি শেয়ার্ড রিপোজিটরির সাথে সিঙ্ক্রোনাইজ করা হয়েছে, যাতে সব ভাষার ট্র্যাকে সামঞ্জস্য বজায় থাকে। প্রয়োজন অনুযায়ী অতিরিক্ত স্পষ্টীকরণ দিতে বা নির্দেশনা পরিবর্তন করতে এই পরিশিষ্টটি রয়েছে, যাতে তা Clojure ট্র্যাকের লক্ষ্যের সাথে আরও ভালোভাবে মেলে।
Clojure ট্র্যাকের এই অনুশীলনীর জন্য, টেস্টগুলো যেমনটি নির্দেশ করে, আপনি ধরে নিতে পারেন যে ইনপুটটি একটি ভেক্টর।
Exercism-এ সাইন আপ করুন, Clojure ট্র্যাকের 12টি কনসেপ্ট105টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।