Advertisement
Guest User

Untitled

a guest
Aug 30th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. import random
  2.  
  3. def pair(x,y):
  4. z = 0
  5. i = 0
  6. while x > 0 or y > 0:
  7. z |= (x & 1)<<i
  8. i += 1
  9. z |= (y & 1)<<i
  10. i += 1
  11. x >>= 1
  12. y >>= 1
  13. return z
  14.  
  15. def unpair(z):
  16. x = 0
  17. y = 0
  18. i = 0
  19. while z > 0:
  20. x |= (z & 1) << i
  21. y |= (z & 2) >> 1 << i
  22. i += 1
  23. z >>= 2
  24. return (x,y)
  25.  
  26. def pair_many(seq):
  27. z = pair(seq[0], seq[1])
  28. for item in seq[2:]:
  29. z = pair(z, item)
  30. return z
  31.  
  32. def unpair_many(z, size):
  33. result = []
  34. for _ in range(size-1):
  35. z, item = unpair(z)
  36. result.append(item)
  37. result.append(z)
  38. result.reverse()
  39. return result
  40.  
  41. def pair_many_with_length_data(seq):
  42. return pair_many(seq + (len(seq),))
  43.  
  44. def unpair_many_with_length_data(z):
  45. z, size = unpair(z)
  46. return unpair_many(z, size)
  47.  
  48. seq = (4,8,15,16,23,42)
  49. x = pair_many_with_length_data(seq)
  50. print(x)
  51. print(unpair_many_with_length_data(x))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement