Skip to content

Instantly share code, notes, and snippets.

@dalraf
Created October 12, 2024 22:22
Show Gist options
  • Select an option

  • Save dalraf/e69f51dcab338bb1791176973b8c7dea to your computer and use it in GitHub Desktop.

Select an option

Save dalraf/e69f51dcab338bb1791176973b8c7dea to your computer and use it in GitHub Desktop.
def invert(bit, tree):
if isinstance(tree, list):
return [invert((bit << 1) | 0, tree[0]),
invert((bit << 1) | 1, tree[1])]
else:
return bit
def bit_reverse(n, bits):
return int(format(n, f'0{bits}b')[::-1], 2)
def tree_depth(tree):
return 1 + tree_depth(tree[0]) if isinstance(tree, list) else 0
def invert_tree(tree):
depth = tree_depth(tree)
inverted = invert(0, tree)
def apply_bit_reverse(node):
if isinstance(node, list):
return [apply_bit_reverse(node[0]), apply_bit_reverse(node[1])]
else:
return bit_reverse(node, depth)
return apply_bit_reverse(inverted)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment