কম্পিউটার

পাইথনে ডিকোড XORed পারমুটেশন খোঁজার প্রোগ্রাম


ধরুন আমরা একটি অ্যারে enc আছে. একটি অ্যারে perm আছে যা প্রথম n(বিজোড়) ধনাত্মক পূর্ণসংখ্যার একটি স্থানান্তর। এই তালিকাটি এন-1 দৈর্ঘ্যের অ্যারে এনকোডে এনকোড করা হবে, যেমন enc[i] =perm[i] XOR perm[i+1]। আমাদের আসল অ্যারে পারম খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি enc =[2,5,6,3] এর মত হয়, তাহলে আউটপুট হবে [7, 5, 0, 6, 5], এখানে [7 XOR 5 XOR 0 XOR 6 XOR 5] =[ 2, 5, 6, 3]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • n :=enc এর আকার
  • ফলাফল :=আকারের একটি অ্যারে (n+1) এবং 0 দিয়ে পূরণ করুন
  • x :=0
  • 1 থেকে n+1 রেঞ্জের জন্য,
      করুন
    • x :=x XOR i
  • ফলাফল[0] :=x
  • 1 থেকে n রেঞ্জের i জন্য, 2 দ্বারা বাড়ান, করুন
    • ফলাফল[0] :=ফলাফল[0] XOR enc[i]
  • 1 থেকে n রেঞ্জের জন্য, করুন
    • ফলাফল[i] :=ফলাফল[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. পাইথনে একটি সংখ্যার সুপার ডিজিট খোঁজার প্রোগ্রাম

  2. পাইথন প্রোগ্রাম একটি বড় সংখ্যার ফ্যাক্টরিয়াল খুঁজে বের করতে

  3. পাইথনে বহুভুজের এলাকা খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে বহুভুজের পরিধি খুঁজে বের করার প্রোগ্রাম