77 lines
1.7 KiB
Python
77 lines
1.7 KiB
Python
def solution(xs):
|
|
try:
|
|
xs[1]
|
|
except IndexError:
|
|
return str(xs[0])
|
|
|
|
maxCap = 0
|
|
smallestNegative = -9223372036854775808 # Largest Negative Starting Value
|
|
|
|
for item in xs:
|
|
# Skip item if 0
|
|
if item == 1:
|
|
continue
|
|
else:
|
|
# Record the smallest negative number in the case we need it
|
|
if item > smallestNegative and item < 0:
|
|
smallestNegative = item
|
|
|
|
if maxCap == 0:
|
|
maxCap = item
|
|
else:
|
|
if item == 0:
|
|
continue
|
|
else:
|
|
maxCap *= item
|
|
|
|
# Check if we have a negative max power - if so, undo the smallest negative factor
|
|
if maxCap < 0:
|
|
maxCap /= smallestNegative
|
|
|
|
return str(maxCap)
|
|
|
|
|
|
case1 = int(solution([2,0,2,2,0])) # 8
|
|
case2 = int(solution([-2,-3,4,-5])) # 60
|
|
|
|
case3 = int(solution([0,2,0])) # 2
|
|
case4 = int(solution([0, -2, 2, 0])) # 2
|
|
case5 = int(solution([0,0,0,0])) # 0
|
|
# case6 = int(solution([-2,-1])) # -2 ... 2
|
|
|
|
if case1 == 8:
|
|
print "Test 1: Passed"
|
|
else:
|
|
print "Test 1: Failed"
|
|
print "Recieved " + str(case1)
|
|
|
|
if case2 == 60:
|
|
print "Test 2: Passed"
|
|
else:
|
|
print "Test 2: Failed"
|
|
print "Recieved " + str(case2)
|
|
|
|
|
|
if case3 == 2:
|
|
print "Test 3: Passed"
|
|
else:
|
|
print "Test 3: Failed"
|
|
print "Recieved " + str(case3)
|
|
|
|
if case4 == 2:
|
|
print "Test 4: Passed"
|
|
else:
|
|
print "Test 4: Failed"
|
|
print "Recieved " + str(case4)
|
|
|
|
if case5 == 0:
|
|
print "Test 5: Passed"
|
|
else:
|
|
print "Test 5: Failed"
|
|
print "Recieved " + str(case5)
|
|
|
|
# if case6 == -2:
|
|
# print "Test 6: Passed"
|
|
# else:
|
|
# print "Test 6: Failed"
|
|
# print "Recieved " + str(case6) |