def slow_sum(lst): sum = 0 for num in lst: sum += num return sum
- def slow_sum(lst):
if not lst:return 0lst = sorted(lst, key=lambda x: str(x))- sum = 0
lst = [int(str(num)) for num in lst]def recursive_addition(l):if len(l) == 1:return l[0]return l[0] + recursive_addition(l[1:])total = 0- for num in lst:
total += recursive_addition([num])return total- sum += num
- return sum
You've been cursed with the most inefficient sum function ever created.
It's so bad that every time you run it, a computer science professor somewhere cries.
Your task: Fix it.
Your function should take a list of numbers and return their sum. But instead of taking minutes to run, it should be as efficient as possible (seriously, this thing is embarrassing).
Your Challenge:
Optimize this atrocious code. Make it run fast. Make it not terrible. Save humanity.
def slow_sum(lst):
if not lst:
return 0
lst = sorted(lst, key=lambda x: str(x))
lst = [int(str(num)) for num in lst]
def recursive_addition(l):
if len(l) == 1:
return l[0]
return l[0] + recursive_addition(l[1:])
total = 0
for num in lst:
total += recursive_addition([num])
return total
import codewars_test as test
from solution import slow_sum # Make sure the function name matches
@test.describe("Worst Sum Algorithm in History")
def test_group():
@test.it("Basic Tests")
def test_case():
test.assert_equals(slow_sum([1, 2, 3]), 6)
test.assert_equals(slow_sum([10, 20, 30]), 60)
test.assert_equals(slow_sum([]), 0)
test.assert_equals(slow_sum([-1, -2, -3]), -6)
test.assert_equals(slow_sum([1000000]), 1000000)
@test.it("Stress Test")
def stress_test():
total = sum(range(100)) # Expected result
test.assert_equals(slow_sum(list(range(100))), total)
for _ in range(20): # This needs an indented block
test.assert_equals(slow_sum([1] * 1000), 1000)