Friday 16 July 2021

নাম্বারের খোজে - (লিনিয়ার সার্চ অনুশীলন )

 

shakilbaburjhuli, algorithm bangla

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

 প্রব্লেমের  নাম - নাম্বারের খোজে  

shakilbaburjhuli, javascript algorithm, bangla algorithm


আপনি যদি প্রব্লেমটি বুঝে থাকেন তাহলে কোড লিখা  শুরু করে দিন আর যদি বুঝে থাকেন কিন্তু সমাধান করতে নাহ পারেন তাহলে আমি আপনাকে সমাধানটি করে দিচ্ছি -

প্রব্লেমটিতে বলা হয়েছে যে,  ইনপুট হিসেবে একটি নাম্বারের অ্যারে nums এবং অ্যারে থেকে যে নাম্বার খোজ করবো অর্থাৎ  x  নিতে হবে । তারপর অ্যারের প্রথম অর্ধেকের প্রত্যেকটা উপাদানের সাথে 5 যোগ করে পুরো অ্যারেতে x কে খুজতে হবে । যদি x কে অ্যারেতে পাওয়া যায়  তাহলে আউটপুট হিসেবে  একটি স্ট্রিং YES অথবা NO প্রিন্ট করতে হবে ।

 

আমরা এই প্রব্লেমটি প্লেইন জাভাস্ক্রিপ্ট দিয়ে সমাধান করবো । সমস্যাটি আপনি অনেক ভাবেই সমাধান করতে পারেন , তবে আমরা গত লেকচারের অনুসারে অর্থাৎ লিনিয়ার সার্চ ব্যাবহার করবো -

 ১। প্রথমে একটি ফাংশন নিই -  


const findTheNumber = (nums, x) => {
    // code here
}

আমি findTheNumber() নামে একটি ফাংশন এবং দুইটি প্যাঁরামিটার nums এবং x নিয়েছি । এখন উপরোক্ত প্রব্লেমটি সমাধান করা যাক -

const findTheNumber = (nums, x) => {

    // অ্যারের মাঝের ইনডেক্স নাম্বার
    let halfNumber = Math.floor(nums.length/2);

    // nums অ্যারের দ্বিতীয় অর্ধেক array তে রাখলাম
    let array = [...nums.slice(halfNumber, nums.length - 1)];

    // nums অ্যারের প্রথম অর্ধেকে লুপ চালাইলাম
    for(let i = 0; i <= halfNumber; i++){

        // nums অ্যারের প্রথম অর্ধেকের প্রত্যেকে উপাদানের সাথে 
        // ৫ যোগ করে array তে  রাখলাম
        array.push(nums[i] + 5);
    };


    // এখন আমরা (array) এই অ্যারেতে লিনিয়ার সার্চ ব্যাবহার করে x খুজবো
    let isFound = false;
    for(let j = 0; j<array.length; j++){
        if(array[j] === x){
            isFound = true;
        }
    }

    // যদি isFound = true হয় তাহলে YES নয়তো NO রিটার্ন করি
    return (isFound ? "YES" : "NO");
}

প্রত্যেকটি লাইনে কমেন্ট আউট করে বোঝানো হয়েছে কিভাবে কি করতেছে । তারপরেও যদি আপনি নাহ বুঝেন তাহলে একটু একটু করে কোড লিখুন এবং রান করুন ।

এই সমাধানটা আমরা আরও অনেকভাবে সমাধান করতে পারি, কোডও অনেক ছোট হবে । কিন্তু পুরো-পুরি লিনিয়ার সার্চ অ্যালগরিদম ব্যাবহার করে করলাম যাতে আগের লেকচারের ইমপ্লিমেন্টেশনটাও অ্যাপ্লায় করতে পারি ।

সমাধান একটু বড় হলেও কিন্তু সহজ এখন টেস্ট কেস গুলো অ্যাপ্লায় করে দেখি প্রোগ্রাম ঠিকঠাক কাজ করে কি নাহ ?

১। প্রথম টেস্ট কেস পরীক্ষা -

let result = findTheNumber([1,2,3,4,5],7);
console.log(result);
// YES

১। দ্বিতীয় টেস্ট কেস পরীক্ষা -

let result = findTheNumber([10,20,30,40],70);
console.log(result);
// NO

সবকিছু ঠিকঠাক ।

সবার সুবিধার্থে উপরের সমাধানটি কোনো প্রকার কমেন্ট ছাড়া দেওয়া হইলো -

const findTheNumber = (nums, x) => {
    let halfNumber = Math.floor(nums.length/2);
    let array = [...nums.slice(halfNumber, nums.length - 1)];
    for(let i = 0; i <= halfNumber; i++){
        array.push(nums[i] + 5);
    };

    // linear search apply
    let isFound = false;
    for(let j = 0; j<array.length; j++){
        if(array[j] === x){
            isFound = true;
        }
    }

    return (isFound ? "YES" : "NO");
}

ধন্যবাদ সবাইকে আজকে এই পর্যন্তই।

# linear search problem

# linear search algorithm

Share:

0 comments:

Post a Comment