finish extra/gearing-up-for-destruction #22
35
extra/gearing-up-for-destruction/solution.py
Normal file
35
extra/gearing-up-for-destruction/solution.py
Normal file
@ -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)
|
||||||
Loading…
x
Reference in New Issue
Block a user