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

पायथन में डिकोड XORed क्रमपरिवर्तन खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक सरणी enc है। एक सरणी परमिट है जो पहले एन (विषम) सकारात्मक पूर्णांक का क्रमपरिवर्तन है। इस सूची को लंबाई n-1 के सरणी enc में एन्कोड किया जाएगा, जैसे कि enc[i] =perm[i] XOR perm[i+1]। हमें ओरिजिनल ऐरे पर्म ढूंढना है।

इसलिए, यदि इनपुट एनसी =[2,5,6,3] जैसा है, तो आउटपुट [7, 5, 0, 6, 5] होगा, यहाँ [7 एक्सओआर 5 एक्सओआर 0 एक्सओआर 6 एक्सओआर 5] =[ 2, 5, 6, 3]

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

  • n :=enc का आकार
  • परिणाम:=आकार की एक सरणी (n+1) और 0 से भरें
  • x :=0
  • 1 से n+1 की श्रेणी में i के लिए, करें
    • x :=x XOR i
  • परिणाम[0] :=x
  • 1 से n की श्रेणी में i के लिए, 2 से बढ़ाएँ, करें
    • result[0] :=result[0] XOR enc[i]
  • 1 से n की श्रेणी में i के लिए, करें
    • result[i] :=result[i-1] XOR enc[i-1]
  • वापसी का परिणाम

उदाहरण

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

def solve(enc):
   n = len(enc)
   result = [0] * (n+1)
   x = 0
   for i in range(1, n+2):
      x ^= i
   result[0] = x
   for i in range(1, n+1, 2):
      result[0] ^= enc[i]
   for i in range(1, n+1):
      result[i] = result[i-1] ^ enc[i-1]
   return result

enc = [2,5,6,3]
print(solve(enc))

इनपुट

[2,5,6,3]

आउटपुट

[7, 5, 0, 6, 5]

  1. बड़ी संख्या का भाज्य खोजने के लिए पायथन कार्यक्रम

    मान लीजिए कि हमारे पास एक बड़ी संख्या n है। हमें इसका फैक्टोरियल खोजना होगा। कुछ अन्य भाषाओं में बड़ी संख्या का भाज्य ज्ञात करना बहुत कठिन है क्योंकि यह पूर्णांक डेटा प्रकारों की सीमा से अधिक हो सकता है। लेकिन पायथन में यह स्वचालित रूप से लंबाई का पता लगा लेगा और डिफ़ॉल्ट रूप से संख्या को बड़े पूर्ण

  1. पायथन में बहुभुज का क्षेत्रफल ज्ञात करने का कार्यक्रम

    मान लीजिए कि हमारे पास ऑर्डर किए गए बिंदुओं की एक सूची है जो 2 डी विमान पर एक साधारण बहुभुज समापन बिंदु का प्रतिनिधित्व करती है। हमें इस बहुभुज का क्षेत्रफल ज्ञात करना है। इसलिए, यदि इनपुट अंक =[(0, 0), (0,5), (3, 5), (3,0)] की तरह है, तो आउटपुट 15 होगा। इसे हल करने के लिए, हम इन चरणों का पालन क

  1. पायथन में बहुभुज की परिधि खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास ऑर्डर किए गए बिंदुओं की एक सूची है जो 2 डी विमान पर एक साधारण बहुभुज समापन बिंदु का प्रतिनिधित्व करती है। हमें इस बहुभुज का परिमाप ज्ञात करना है। इसलिए, यदि इनपुट अंक =[(0, 0), (0,5), (3, 5), (3,0)] की तरह है, तो आउटपुट 16 होगा क्योंकि दो भुजाओं की लंबाई 3 है और दो भुजाओं