Cidr4 merge algorithm #5

Merged
PavelPatsey merged 91 commits from CIDR4_merge_algorithm into main 2025-01-27 22:05:39 +03:00
Showing only changes of commit 6c43344893 - Show all commits
+8 -10
View File
@@ -27,16 +27,14 @@ def find_parent(a: Node, b: Node) -> Node:
def calc_dip(mask_len_a: int, mask_len_b: int, mask_len_p: int) -> int: def calc_dip(mask_len_a: int, mask_len_b: int, mask_len_p: int) -> int:
mask_len = mask_len_p + 1 def dip(mla, mlp):
dip_a = 0 m = mlp + 1
while mask_len_a > mask_len: res = 1 << (mla - m)
dip_a += 2 ** (32 - mask_len_a) res -= 1
mask_len_a -= 1 res <<= 32 - mla
dip_b = 0 return res
while mask_len_b > mask_len:
dip_b += 2 ** (32 - mask_len_b) return dip(mask_len_a, mask_len_p) + dip(mask_len_b, mask_len_p)
mask_len_b -= 1
return dip_a + dip_b
def merge_two_nodes(node_a: Node, node_b: Node) -> tuple[Node, int]: def merge_two_nodes(node_a: Node, node_b: Node) -> tuple[Node, int]: