def get_smallest_nonoverlapping_set()

in experimental/piranha_playground/rule_inference/utils/node_utils.py [0:0]


    def get_smallest_nonoverlapping_set(nodes: List[Node]) -> List[Node]:
        """
        Get the smallest non-overlapping set of nodes from the given list.

        :param nodes: List of nodes.
        :return: The smallest non-overlapping set of nodes.
        """
        nodes = sorted(
            nodes, key=lambda x: (x.start_point, tuple(map(lambda n: -n, x.end_point)))
        )
        # get the smallest non overlapping set of nodes
        smallest_non_overlapping_set = []
        for node in nodes:
            if not smallest_non_overlapping_set:
                smallest_non_overlapping_set.append(node)
            else:
                if node.start_point > smallest_non_overlapping_set[-1].end_point:
                    smallest_non_overlapping_set.append(node)
        return smallest_non_overlapping_set