अवधारणा
समान नियमों वाले अनंत शतरंज बोर्ड पर दिए गए N घोड़ों के निर्देशांक (-10^9 <= x, y <= 10^9) और राजा के निर्देशांक के संबंध में, यह सत्यापित करना है कि राजा चेकमेट है या नहीं।
उदाहरण
इनपुट
a1[] = { { 2, 1 }, { 1, 3 }, { 3, 6 },{ 5, 5 }, { 6, 1 }, { 7, 3 }} king -> {4, 3}
आउटपुट
Yes
राजा कोई चाल नहीं चल सकता क्योंकि यह चेकमेट है।
इनपुट
a1[] = {{1, 1}} king -> {3, 4}
आउटपुट
No
राजा वैध चालें चल सकता है।
विधि
घोड़े की चाल शतरंज के टुकड़ों में असामान्य है। इसकी गति एक ऐसे वर्ग की ओर होती है जो क्षैतिज रूप से दो वर्ग दूर और लंबवत रूप से एक वर्ग, या लंबवत रूप से दो वर्ग और क्षैतिज रूप से एक वर्ग दूर होता है। इसलिए पूर्ण चाल हर संभव आकार में "L" अक्षर की तरह दिखती है (8 संभावित चालें)। परिणामस्वरूप, जोड़े के हैश मैप को लागू करें ताकि उन सभी संभावित निर्देशांकों को चिह्नित किया जा सके जहां घोड़ा चल सकता है। यदि देखा जाता है कि राजा अपने आसन्न 8 निर्देशांकों में से किसी पर नहीं चल सकता है यानी यदि निर्देशांक घोड़े की चाल द्वारा हैश किया गया है, तो इसे "चेकमेट" घोषित किया जाता है।
C++ कार्यान्वयन
// C++ program for verifying if a king can move a valid move or not when N knights are there in a modified chessboard
#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!