diff --git a/extra/gearing-up-for-destruction/solution.py b/extra/gearing-up-for-destruction/solution.py new file mode 100644 index 0000000..65e0dd3 --- /dev/null +++ b/extra/gearing-up-for-destruction/solution.py @@ -0,0 +1,35 @@ +def solution(pegs): + odd, even = sum_odd_even(pegs) + + if len(pegs) % 2 == 0: + s = 2 * odd - 2 * even - pegs[-1] + pegs[0] + if s <= 0: + return [-1, -1] + if s % 3 == 0: + return [2*s/3, 1] + else: + return [2*s, 3] + else: + s = 2 * odd - 2 * even + pegs[-1] + pegs[0] + if s <= 0: + return [-1, -1] + return [2*s, 1] + +def sum_odd_even(pegs): + odd, even = 0, 0 + for i, peg in enumerate(pegs): + if i % 2 == 1: + odd += peg + else: + even += peg + return odd, even + + +tests = [ + ([4, 30, 50], [12, 1]), + ([4, 17, 50], [-1, -1]), + ] + +for i, o in tests: + result = solution(i) + print (i, result == o, result, o)