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

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


मान लीजिए हमारे पास एक अनंत शतरंज बोर्ड है जिसमें शतरंज के समान नियम हैं और यदि अनंत शतरंज बोर्ड पर N घोड़ों (knights) के निर्देशांक हैं और राजा का निर्देशांक है, तो हमें जांचना है कि राजा चेकमेट है या नहीं। अनंत बोर्ड का निर्देशांक बड़े मान जैसे (-10^9 <= x, y <= 10^9) से बंधा होता है।

यदि इनपुट नाइट्स पोजीशन = [[2,1],[1,3],[3,6],[5,5],[6,1],[7,3]] और किंग पोजीशन: [4,3] जैसा है,

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

तो आउटपुट 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 लौटाएं
  • 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

  1. পাইথন প্রোগ্রাম - পয়েন্টগুলোর কনকেভ পলিগন গঠন করে কিনা তা যাচাই করুন

  2. পাইথন প্রোগ্রাম - পয়েন্টগুলোর কনভেক্স হাল গঠন করে কিনা তা যাচাই করুন

  3. পাইথনে যাচাই করুন চেসবোর্ডে কুইন (রানি) কোনো সেল আক্রমণ করতে পারে কিনা

  4. পাইথনে রোবট লক্ষ্য অবস্থানে পৌঁছাতে পারে কিনা যাচাই করার প্রোগ্রাম