কম্পিউটার টিউটোরিয়াল

C++-এ মিরর রিফ্লেকশন সমস্যা সমাধান

মান लीজिए একটি বিশেষ বর্গাকার কক্ষ আছে যার চারদিকের দেওয়ালে মিরর রয়েছে। দক্ষিণ-পশ্চিম কোণ ছাড়া প্রতিটি কোণে রিসেপ্টর রয়েছে। এগুলো 0, 1, এবং 2 হিসেবে নম্বর করা হয়েছে। বর্গাকার কক্ষের দেওয়ালের দৈর্ঘ্য p, এবং দক্ষিণ-পশ্চিম কোণ থেকে একটি লেজার রে পূর্বের দেওয়ালে 0 নম্বর রিসেপ্টর থেকে q দূরত্বে প্রথমে ধাক্কা দেয়। আমাদের খুঁজে বের করতে হবে রে কোন রিসেপ্টরকে প্রথমে ধাক্কা দেয়।

যদি p = 2 এবং q = 1 হয়, তাহলে কেসটি হবে −

C++-এ মিরর রিফ্লেকশন সমস্যা সমাধান

আউটপুট হবে 2, কারণ রে বাম দেওয়ালে রিফ্লেক্ট হয়ে 2 নম্বর রিসেপ্টরকে প্রথমে ধাক্কা দেয়।

এটি সমাধান করার জন্য নিচের ধাপগুলি অনুসরণ করুন −

  • যদি p এবং q উভয়ই জোড় হয়,
    • p := p/2
    • q := q / 2
  • যদি p জোড় হয়, তবে 2 ফেরত দিন
  • যদি q জোড় হয়, তবে 0 ফেরত দিন
  • অন্যথায় 1 ফেরত দিন

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int mirrorReflection(int p, int q) {
        while(p % 2 == 0 && q % 2 == 0){
            p >>= 1;
            q >>= 1;
        }
        if(p % 2 == 0) return 2;
        if(q % 2 == 0) return 0;
        return 1;
    }
};

main(){
    Solution ob;
    cout << (ob.mirrorReflection(2, 1));
}

ইনপুট

2 1

আউটপুট

2
  1. বাইনারি ট্রিতে দেওয়া নোডের মিরর নোড খুঁজে বের করা C++-এ

  2. ২-ডি প্লেনে একটি পয়েন্টের মিরর ইমেজ খুঁজে বের করা C++-এ

  3. C++-এ static_assert এর ব্যবহার

  4. C++-এ Line Reflection: ২D প্লেনে বিন্দুগুলোর Y-অক্ষ সমান্তরাল প্রতিফলন লাইন আছে কিনা যাচাই করা