From 020836d33dae06b37d19fbfc5adccc047a02dad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B0=D0=B2=D0=B5=D0=BB?= Date: Sat, 11 Jan 2025 14:40:21 +0300 Subject: [PATCH] add sort_nodes func --- cidr4_merger.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/cidr4_merger.py b/cidr4_merger.py index ca7eabc..723ce9d 100644 --- a/cidr4_merger.py +++ b/cidr4_merger.py @@ -19,8 +19,12 @@ def cidr4_to_node(cidr4: str) -> Node: return ip_value, mask_len, added_ips_number +def sort_nodes(nodes: list[Node]) -> list[Node]: + return sorted(nodes, key=lambda x: (x[1], x[0])) + + def data_to_nodes(data: list[str]) -> list[Node]: - return sorted(map(cidr4_to_node, data)) + return sort_nodes(map(cidr4_to_node, data)) def get_mask(node: Node) -> int: @@ -90,5 +94,19 @@ if __name__ == "__main__": assert have_same_parent((value_a, 6, 0), (0, 1, 0)) is False assert have_same_parent((value_a, 6, 0), (0, 0, 0)) is False - # main() + assert sort_nodes( + [ + (401219072, 24, 0), + (2899902464, 19, 0), + (400657664, 24, 0), + (520969728, 23, 0), + ] + ) == [ + (2899902464, 19, 0), + (520969728, 23, 0), + (400657664, 24, 0), + (401219072, 24, 0), + ] + + main() # cProfile.run("main()")