Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- def pair(x,y):
- z = 0
- i = 0
- while x > 0 or y > 0:
- z |= (x & 1)<<i
- i += 1
- z |= (y & 1)<<i
- i += 1
- x >>= 1
- y >>= 1
- return z
- def unpair(z):
- x = 0
- y = 0
- i = 0
- while z > 0:
- x |= (z & 1) << i
- y |= (z & 2) >> 1 << i
- i += 1
- z >>= 2
- return (x,y)
- def pair_many(seq):
- z = pair(seq[0], seq[1])
- for item in seq[2:]:
- z = pair(z, item)
- return z
- def unpair_many(z, size):
- result = []
- for _ in range(size-1):
- z, item = unpair(z)
- result.append(item)
- result.append(z)
- result.reverse()
- return result
- def pair_many_with_length_data(seq):
- return pair_many(seq + (len(seq),))
- def unpair_many_with_length_data(z):
- z, size = unpair(z)
- return unpair_many(z, size)
- seq = (4,8,15,16,23,42)
- x = pair_many_with_length_data(seq)
- print(x)
- print(unpair_many_with_length_data(x))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement