Syntax error Program to find decode XORed permutation in Python

Program to find decode XORed permutation in Python



Suppose we have an array enc. There is an array perm that is a permutation of the first n(odd) positive integers. This list will be encoded into array enc of length n-1, such that enc[i] = perm[i] XOR perm[i+1]. We have to find the original array perm.

So, if the input is like enc = [2,5,6,3], then the output will be [7, 5, 0, 6, 5], here [7 XOR 5 XOR 0 XOR 6 XOR 5] = [2, 5, 6, 3]

To solve this, we will follow these steps −

  • n := size of enc
  • result := an array of size (n+1) and fill with 0
  • x := 0
  • for i in range 1 to n+1, do
    • x := x XOR i
  • result[0] := x
  • for i in range 1 to n, increase by 2, do
    • result[0] := result[0] XOR enc[i]
  • for i in range 1 to n, do
    • result[i] := result[i-1] XOR enc[i-1]
  • return result

Example

Let us see the following implementation to get better understanding −

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))

Input

[2,5,6,3]

Output

[7, 5, 0, 6, 5]
Updated on: 2021-10-07T11:04:03+05:30

227 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements