ধরুন, enc নামে একটি অ্যারে আছে। একটি perm অ্যারে আছে যা প্রথম n (বিজোড়) পজিটিভ ইন্টিজারের পারমুটেশন। এই লিস্টটি enc অ্যারেতে এনকোড করা হয়েছে যেখানে enc[i] = perm[i] XOR perm[i+1]। আমাদের মূল perm অ্যারেটি বের করতে হবে।
উদাহরণ
ইনপুট: enc = [2,5,6,3]
আউটপুট: [7, 5, 0, 6, 5] কারণ [7 XOR 5 XOR 0 XOR 6 XOR 5] = [2, 5, 6, 3]
সমাধানের ধাপসমূহ
n := size of encresult := size (n+1) array filled with 0x := 0for i in range 1 to n+1:x := x XOR i
result[0] := xfor i in range 1 to n, step 2:result[0] := result[0] XOR enc[i]
for i in range 1 to n:result[i] := result[i-1] XOR enc[i-1]
resultরিটার্ন করুন।
পাইথন কোড
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]
ব্যাখ্যা: XOR-এর বৈশিষ্ট্য ব্যবহার করে প্রথম এলিমেন্ট বের করা হয়, তারপর বাকিগুলো secuencia-এ নির্ণয় করা হয়।