मान लीजिए हमारे पास एक अनंत शतरंज बोर्ड है जिसमें शतरंज के समान नियम हैं और यदि अनंत शतरंज बोर्ड पर N घोड़ों (knights) के निर्देशांक हैं और राजा का निर्देशांक है, तो हमें जांचना है कि राजा चेकमेट है या नहीं। अनंत बोर्ड का निर्देशांक बड़े मान जैसे (-10^9 <= x, y <= 10^9) से बंधा होता है।
यदि इनपुट नाइट्स पोजीशन = [[2,1],[1,3],[3,6],[5,5],[6,1],[7,3]] और किंग पोजीशन: [4,3] जैसा है,

तो आउटपुट True होगा, क्योंकि राजा के पास कोई चाल नहीं है, इसलिए यह चेकमेट है।
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- my_dict := एक नया मैप
- i को 0 से n तक के लिए, करें:
- x := a[i][0], y := a[i][1]
- my_dict[x, y] := 1
- नाइट के सभी 8 संभावित चालों के लिए my_dict में संबंधित निर्देशांक को 1 पर सेट करें
- i को -1 से 1 तक, करें:
- j को -1 से 1 तक, करें:
- nx := king_pos[0] + i, ny := king_pos[1] + j
- यदि i, 0 नहीं है और j, 0 नहीं है, तो
- यदि my_dict[(nx, ny)] शून्य है, तो False लौटाएं
- j को -1 से 1 तक, करें:
- True लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def is_checkmate(a, n, king_pos):
my_dict = {}
for i in range(0, n):
x = a[i][0]
y = a[i][1]
my_dict[(x, y)] = 1
my_dict[(x - 2, y + 1)] = 1
my_dict[(x - 2, y - 1)] = 1
my_dict[(x + 1, y + 2)] = 1
my_dict[(x + 1, y - 2)] = 1
my_dict[(x - 1, y + 2)] = 1
my_dict[(x + 2, y + 1)] = 1
my_dict[(x + 2, y - 1)] = 1
my_dict[(x - 1, y - 2)] = 1
for i in range(-1, 2):
for j in range(-1, 2):
nx = king_pos[0] + i
ny = king_pos[1] + j
if i != 0 and j != 0:
if not my_dict[(nx, ny)]:
return False
return True
a = [[2,1],[1,3],[3,6],[5,5],[6,1],[7,3]]
n = len(a)
pos = [4, 3]
print(is_checkmate(a, n, pos))
इनपुट
[[2,1],[1,3],[3,6],[5,5],[6,1],[7,3]], 6, [4, 3]
आउटपुट
True