Cidr4 merge algorithm #5
@@ -4,8 +4,8 @@ from vpn_manager.cidr4_merge.cidr4_merger import (
|
|||||||
find_neighbors,
|
find_neighbors,
|
||||||
find_parent,
|
find_parent,
|
||||||
make_cidr4,
|
make_cidr4,
|
||||||
merge_nodes,
|
|
||||||
merge_two_nodes,
|
merge_two_nodes,
|
||||||
|
solution,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ def test_find_neighbors():
|
|||||||
|
|
||||||
|
|
||||||
def test_merge_nodes():
|
def test_merge_nodes():
|
||||||
assert merge_nodes(
|
assert solution(
|
||||||
[
|
[
|
||||||
(0, 32),
|
(0, 32),
|
||||||
(3, 32),
|
(3, 32),
|
||||||
@@ -106,7 +106,7 @@ def test_merge_nodes():
|
|||||||
2,
|
2,
|
||||||
) == ([(0, 30), (4, 32)], 2)
|
) == ([(0, 30), (4, 32)], 2)
|
||||||
|
|
||||||
assert merge_nodes(
|
assert solution(
|
||||||
[
|
[
|
||||||
(0, 32),
|
(0, 32),
|
||||||
(3, 32),
|
(3, 32),
|
||||||
@@ -116,7 +116,7 @@ def test_merge_nodes():
|
|||||||
2,
|
2,
|
||||||
) == ([(0, 29)], 4)
|
) == ([(0, 29)], 4)
|
||||||
|
|
||||||
assert merge_nodes(
|
assert solution(
|
||||||
[
|
[
|
||||||
(0, 32),
|
(0, 32),
|
||||||
(3, 32),
|
(3, 32),
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ def merge_two_nodes(a: Node, b: Node) -> tuple[Node, int]:
|
|||||||
return p, dip
|
return p, dip
|
||||||
|
|
||||||
|
|
||||||
def merge_nodes(nodes: list[Node], req_len: int) -> tuple[list[Node], int]:
|
def solution(nodes: list[Node], req_len: int) -> tuple[list[Node], int]:
|
||||||
sum_dip = 0
|
sum_dip = 0
|
||||||
while len(nodes) > req_len:
|
while len(nodes) > req_len:
|
||||||
min_t = None, None, float("inf")
|
min_t = None, None, float("inf")
|
||||||
@@ -92,7 +92,7 @@ def main():
|
|||||||
nodes = sorted(map(cidr4_to_node, data))
|
nodes = sorted(map(cidr4_to_node, data))
|
||||||
ensure_no_subnets(nodes)
|
ensure_no_subnets(nodes)
|
||||||
ensure_no_neighbors(nodes)
|
ensure_no_neighbors(nodes)
|
||||||
merged_nodes, sum_dip = merge_nodes(nodes, required_len)
|
merged_nodes, sum_dip = solution(nodes, required_len)
|
||||||
cidr4s = [make_cidr4(ip, mask_len) for ip, mask_len in merged_nodes]
|
cidr4s = [make_cidr4(ip, mask_len) for ip, mask_len in merged_nodes]
|
||||||
print(cidr4s, sum_dip, sep="\n")
|
print(cidr4s, sum_dip, sep="\n")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user