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

पायथन में एक बार दी गई दिशा को खिसकाने के बाद अगली बोर्ड स्थिति खोजने का कार्यक्रम

मान लीजिए कि हमारे पास प्रारंभिक बोर्ड का प्रतिनिधित्व करने वाला 2048 गेम बोर्ड है और स्वाइप दिशा का प्रतिनिधित्व करने वाली एक स्ट्रिंग दिशा है, हमें अगली बोर्ड स्थिति ढूंढनी है। जैसा कि हम 2048 के खेल में जानते हैं, हमें संख्याओं का 4 x 4 बोर्ड दिया जाता है (उनमें से कुछ खाली हैं, जिन्हें यहां 0 के साथ दर्शाया गया है) जिसे हम 4 दिशाओं में से किसी में भी स्वाइप कर सकते हैं ("यू", "डी", "एल", या "आर")। जब हम स्वाइप करते हैं, तो सभी संख्याएँ उस दिशा में जहाँ तक संभव हो चलती हैं और समान आसन्न संख्याओं को ठीक एक बार जोड़ दिया जाता है।

तो, अगर इनपुट पसंद है

पायथन में एक बार दी गई दिशा को खिसकाने के बाद अगली बोर्ड स्थिति खोजने का कार्यक्रम

दिशा ="एल", तो आउटपुट होगा

पायथन में एक बार दी गई दिशा को खिसकाने के बाद अगली बोर्ड स्थिति खोजने का कार्यक्रम

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

  • यदि दिशा "R" के समान है, तो

    • बोर्ड :=बोर्ड को घड़ी की विपरीत दिशा में दो बार घुमाएं

  • अन्यथा जब दिशा "U" के समान हो, तब

    • बोर्ड :=बोर्ड को घड़ी की विपरीत दिशा में एक बार घुमाएं

  • अन्यथा जब दिशा "D" के समान हो, तो

    • बोर्ड :=बोर्ड को घड़ी की विपरीत दिशा में तीन बार घुमाएं

  • मेरे लिए 0 से 3 की सीमा में, करें

    • पंक्ति:=बोर्ड पर सभी गैर-शून्य तत्वों की सूची[i]

    • j के लिए 0 से 2 की सीमा में, करें

      • अगर j + 1 <पंक्ति और पंक्ति का आकार [j] पंक्ति [j + 1] के समान है, तो

        • पंक्ति [जे]:=पंक्ति [जे] * 2

        • पंक्ति हटाएं[j + 1]

    • जबकि पंक्ति का आकार <4, करें

      • पंक्ति के अंत में 0 डालें

    • बोर्ड [i] :=पंक्ति

  • यदि दिशा "R" के समान है, तो

    • बोर्ड :=बोर्ड को घड़ी की विपरीत दिशा में दो बार घुमाएं

  • अन्यथा जब दिशा "U" के समान हो, तब

    • बोर्ड :=बोर्ड को घड़ी की विपरीत दिशा में तीन बार घुमाएं

  • अन्यथा जब दिशा "D" के समान हो, तो

    • बोर्ड :=बोर्ड को घड़ी की विपरीत दिशा में एक बार घुमाएं

  • रिटर्न बोर्ड

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

उदाहरण

class Solution:
   def solve(self, board, direction):
      if direction == "R":
         board = rot_anti_clock_dir(rot_anti_clock_dir(board))
      elif direction == "U":
         board = rot_anti_clock_dir(board)
      elif direction == "D":
         board = rot_anti_clock_dir(rot_anti_clock_dir(rot_anti_clock_dir(board)))

      for i in range(4):
         row = [x for x in board[i] if x]
         for j in range(3):
            if j + 1 < len(row) and row[j] == row[j + 1]:
               row[j] *= 2
               del row[j + 1]
            while len(row) < 4:
               row += [0]
            board[i] = row

      if direction == "R":
         board = rot_anti_clock_dir(rot_anti_clock_dir(board))
      elif direction == "U":
         board = rot_anti_clock_dir(rot_anti_clock_dir(rot_anti_clock_dir(board)))
      elif direction == "D":
         board = rot_anti_clock_dir(board)
      return board


def rot_anti_clock_dir(x):
   x = [[x[i][j] for i in range(4)] for j in range(4)]
   return x[::-1]

ob = Solution()
matrix = [
[2, 0, 0, 2],
[2, 2, 2, 2],
[0, 4, 2, 2],
[2, 2, 2, 0]]
print(ob.solve(matrix, "L"))

इनपुट

matrix = [
[2, 0, 0, 2],
[2, 2, 2, 2],
[0, 4, 2, 2],
[2, 2, 2, 0]]

आउटपुट

[
[4, 0, 0, 0],
[4, 4, 0, 0],
[4, 4, 0, 0],
[4, 2, 0, 0]]

  1. पायथन में दिए गए स्ट्रिंग अनुक्रम नियमों का पालन करने के बाद nth अनुक्रम खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास दो तार s, t हैं और एक अन्य धनात्मक संख्या n भी दी गई है, हमें अनुक्रम A का nवाँ पद ज्ञात करना है जहाँ - ए[0] =एस ए[1] =टी A[n] =A[n - 1] + A[n - 2] जब n सम हो, अन्यथा A[n] =A[n - 2] + A[n - 1]। उदाहरण के तौर पर, यदि s =a और t =b, तो अनुक्रम A होगा - [a, b, ba (a + b), bba (

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

    मान लीजिए कि हमारे पास दो सरणियाँ A और B हैं। A का आकार पंक्तियों की संख्या है और A[i] ith पंक्ति में बक्सों की संख्या है। और बी गेंदों की सरणी है जहां बी [i] गेंद पर एक संख्या को दर्शाता है। यह देखते हुए कि गेंद i (मान B[i]) को एक बॉक्स में रखा जाएगा, जिसकी शुरुआत से स्थिति B[i] है। हमें प्रत्येक B

  1. पायथन प्रोग्राम में एक मैट्रिक्स के स्थानान्तरण का पता लगाएं

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक मैट्रिक्स दिया गया है, हमें मैट्रिक्स के ट्रांसपोज़ को प्रदर्शित करने की आवश्यकता है। A[i][j] पर मौजूद मान को A[j][i] से बदलकर एक मैट्रिक्स का स्थानान्तरण प्राप्त किया जाता है। आइए अब नीचे दिए गए कार्यान्वय