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

C++-এ শахের বোর্ডে N ঘোড়া থাকলে রাজা যেন বৈধ 무ভ করতে পারে কিনা তা যাচাই করুন


কনসেপ্ট

অনন্ত শतरঞ্জ বোর্ডে Nটি ঘোড়ার কোঅর্ডিনেট এবং রাজার কোঅর্ডিনেট দেওয়া আছে। যাচাই করুন রাজা চেকমেটে আছে কিনা।

ইনপুট

a1[] = { { 2, 1 }, { 1, 3 }, { 3, 6 },{ 5, 5 }, { 6, 1 }, { 7, 3 }} king -> {4, 3}

আউটপুট

Yes

রাজা যেকোনো মুভ দিতে পারছে না, চেকমেট।

ইনপুট

a1[] = {{1, 1}} king -> {3, 4}

আউটপুট

No

রাজা বৈধ মুভ দিতে পারে।

পদ্ধতি

ঘোড়ার মুভ অনন্য: দুই ঘর আড়াঘরে এবং এক ঘর লম্বে, বা দুই ঘর লম্বে এবং এক ঘর আড়াঘরে (৮টি সম্ভাব্য মুভ)। সব ঘোড়ার সম্ভাব্য মুভের কোঅর্ডিনেট একটি হ্যাশ ম্যাপে মার্ক করুন। তারপর রাজার ৮টি সংলগ্ন কোঅর্ডিনেট চেক করুন। যদি সবগুলো হ্যাশে থাকে, তবে চেকমেট।

উদাহরণ

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

bool checkCheckMate1(pair<int, int>a1[], int n1, int kx1, int ky1){ 
    map<pair<int, int>, int> mpp1; 
    for (int i = 0; i < n1; i++) { 
        int x = a1[i].first; 
        int y = a1[i].second; 
        mpp1[{ x, y }] = 1; 
        mpp1[{ x - 2, y + 1 }] = 1; 
        mpp1[{ x - 2, y - 1 }] = 1; 
        mpp1[{ x + 1, y + 2 }] = 1; 
        mpp1[{ x + 1, y - 2 }] = 1; 
        mpp1[{ x - 1, y + 2 }] = 1; 
        mpp1[{ x + 2, y + 1 }] = 1; 
        mpp1[{ x + 2, y - 1 }] = 1; 
        mpp1[{ x - 1, y - 2 }] = 1; 
    } 
    for (int i = -1; i < 2; i++) { 
        for (int j = -1; j < 2; j++) { 
            int nx = kx1 + i; 
            int ny = ky1 + j; 
            if (i != 0 && j != 0) { 
                if (!mpp1[{ nx, ny }]) { 
                    return true; 
                } 
            } 
        } 
    } 
    return false; 
} 

int main(){ 
    pair<int, int> a1[] = { { 2, 1 }, { 1, 3 }, { 3, 6 }, { 5, 5 }, { 6, 1 }, { 7, 3 }}; 
    int n1 = sizeof(a1) / sizeof(a1[0]); 
    int x = 4, y = 3; 
    if (checkCheckMate1(a1, n1, x, y)) 
        cout << "Not Checkmate!"; 
    else 
        cout << "Yes its checkmate!"; 
    return 0; 
}

আউটপুট

Yes its checkmate!

  1. C++-এ দেওয়া অ্যারে n লেভেলের BST প্রতিনিধিত্ব করতে পারে কিনা তা যাচাই করা

  2. C++-এ একটি সংখ্যা ২৩ দ্বারা বিভাজ্য কিনা তা যাচাই করা

  3. C++-এ একটি সংখ্যা কৃষ্ণমূর্তি নম্বর (Krishnamurthy Number) কিনা তা যাচাই করা

  4. পাইথনে মডিফাইড চেসবোর্ডে N নাইট থাকলে কিং পায় ভ্যালিড মোভ কিনা চেক করুন