ধরুন আমরা একটি অ্যারে 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]