summaryrefslogtreecommitdiff
path: root/AlgoDesignAndTechniqueEdxPython/sources/covering_segment.py
blob: 1093565d4bfb744a4aa0fd7c058a7158a2a0b56a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Uses python3
import sys
from collections import namedtuple

Segment = namedtuple('Segment', 'start end')


def getSortedListOfSegs(segList):
    segList.sort()
    return segList


def getOptimalPoints(segList):
    if len(segList) == 1:
        return [segList[0].start]
    if segList[0].end <= segList[1].start:
        result = [segList[0].end]
        if segList[1].start == segList[1].end:
            if len(segList) == 2:
                return result
            else:
                result.extend(getOptimalPoints(segList[2:]))
                return result
    else:
        if segList[0].end >= segList[1].end:
            result = [segList[1].end]
            del(segList[1])
            result.extend(getOptimalPoints(segList[1:]))
            return result
        else:
            result = [segList[0].end]
            result.extend(getOptimalPoints(segList[1:]))
            return result