Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

जाँच करें कि क्या कोई राजा एक वैध चाल चल सकता है या नहीं जब पायथन में एक संशोधित शतरंज की बिसात में N रातें होती हैं

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

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

जाँच करें कि क्या कोई राजा एक वैध चाल चल सकता है या नहीं जब पायथन में एक संशोधित शतरंज की बिसात में N रातें होती हैं

तब आउटपुट ट्रू होगा, क्योंकि राजा के पास कोई चाल नहीं है, इसलिए यह चेक मेट है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • my_dict :=एक नया नक्शा
  • मैं के लिए 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
  • मैं श्रेणी -1 से 1 के लिए, करो
    • जे के लिए -1 से 1 की श्रेणी में, करें
      • nx :=king_pos[0] + i
      • ny:=king_pos[1] + j
      • यदि i, 0 के समान नहीं है और j, 0 के समान नहीं है, तो
        • अगर my_dict[(nx, ny)] शून्य है, तो
          • झूठी वापसी
  • सही लौटें

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

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. बिंदुओं की जाँच करने का कार्यक्रम पायथन में उत्तल पतवार बना रहा है या नहीं

    मान लीजिए कि हमारे पास बहुभुज के बाहरी बिंदु दक्षिणावर्त क्रम में हैं। हमें यह जांचना होगा कि ये बिंदु उत्तल पतवार बना रहे हैं या नहीं। इस आरेख से यह स्पष्ट है कि प्रत्येक तीन क्रमागत बिंदुओं के लिए आंतरिक कोण 180° से अधिक नहीं होता है। इसलिए यदि सभी कोण 180° से अधिक नहीं हैं तो बहुभुज उत्तल पतवा

  1. जांचें कि क्या रानी पायथन में शतरंज की बिसात पर दिए गए सेल पर हमला कर सकती है

    मान लीजिए कि हमारे पास रानी और प्रतिद्वंद्वी के लिए शतरंज की बिसात पर दो निर्देशांक हैं। ये बिंदु क्रमशः Q और O हैं। हमें यह जांचना होगा कि रानी प्रतिद्वंद्वी पर हमला कर सकती है या नहीं। जैसा कि हम जानते हैं कि रानी एक ही पंक्ति, एक ही स्तंभ और तिरछे आक्रमण कर सकती है। इसलिए, यदि इनपुट Q =(1, 1) O

  1. रोबोट की जाँच करने का कार्यक्रम पायथन में लक्ष्य की स्थिति तक पहुँच सकता है या नहीं

    मान लीजिए हमारे पास एक रोबोट है, जो वर्तमान में (0, 0) (कार्तीय तल) पर बैठा है। यदि हमारे पास एन (उत्तर), एस (दक्षिण), डब्ल्यू (पश्चिम), और ई (पूर्व) युक्त इसकी चालों की सूची है। हमें यह जांचना होगा कि क्या यह गंतव्य निर्देशांक (x, y) पर पहुंच सकता है। इसलिए, यदि इनपुट चाल =[एन, एन, ई, ई, एस], (एक्