aboutsummaryrefslogtreecommitdiff
path: root/challenge-078/lubos-kolouch/python/ch-1.py
blob: ef18c534ac58ce527ab992371f759f47d91772ab (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
34
35
36
37
38
39
40
41
42
43
#!/bin/env python
""" https://perlweeklychallenge.org/blog/perl-weekly-challenge-078/
    Task 1
    Leader Element
    19.9.2020 Lubos Kolouch """


class LeaderElements:
    """ Class to find Leader elements from a list """

    def __init__(self, arr: list()):
        self.arr = arr
        self.leaders = list()

    def process_list(self):
        """ Process the list and fill in leaders """

        if not self.arr:
            return 0

        self.leaders.insert(0, self.arr[-1])
        for item in reversed(self.arr):
            if item > self.leaders[0]:
                self.leaders.insert(0, item)

        return 1

    def return_leaders(self):
        """ Return the leaders list """
        return self.leaders


tester = LeaderElements([9, 10, 7, 5, 6, 1])
tester.process_list()
assert tester.return_leaders() == [10, 7, 6, 1]

tester = LeaderElements([3, 4, 5])
tester.process_list()
assert tester.return_leaders() == [5]

tester = LeaderElements([])
tester.process_list()
assert tester.return_leaders() == []