about summary refs log tree commit diff
path: root/scratch/facebook/highest-product-of-3.py
blob: c237b8e52e2d07fef866747d11a20e00e60afda5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def hi_product(xs):
    lowest_one, highest_one = min(xs[0], xs[1]), max(xs[0], xs[1])
    lowest_two, highest_two = xs[0] * xs[1], xs[0] * xs[1]
    highest = float('-inf')
    for x in xs[2:]:
        highest = max(highest, highest_two * x, lowest_two * x)
        lowest_one = min(lowest_one, x)
        highest_one = max(highest_one, x)
        lowest_two = min(lowest_two, highest_one * x, lowest_one * x)
        highest_two = max(highest_two, highest_one * x, lowest_one * x)
    return highest

xs = [([-10,-10,1,3,2], 300),
      ([1,10,-5,1,-100], 5000)]

for x, expected in xs:
    result = hi_product(x)
    print(x, result)
    assert result == expected
    print("Success!")