How Sum

Write a function how_sum(target_sum, numbers) that takes in a target_sum and a list of numbers as arguments.

The function should return a list containing any combination of elements that add up to exactly the target_sum. If there is no combination that adds up to the target_sum then return None.

If there are multiple combinations possible, you may return any single one.

You can learn more from Free Code Camp’s Dynamic Programming video.

Starter Code

from typing import List


def how_sum(target_sum: int, numbers: List[int]) -> List[int]:
    pass

Tests

from main import how_sum


def test_how_sum_base_case():
    assert how_sum(0, [1, 2, 3]) == []
    assert how_sum(-1, [1, 2, 3]) == None
    assert how_sum(1, [2, 3]) == None


def test_how_sum():
    assert how_sum(1, [1, 2, 3]) == [1]
    assert sum(how_sum(7, [2, 3])) == 7
    assert sum(how_sum(7, [5, 3, 4, 7])) == 7
    assert sum(how_sum(8, [2, 3, 5])) == 8
    assert how_sum(7, [2, 4]) == None


def test_how_sum_memo():
    assert how_sum(300, [7, 14]) == None