Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First - with itertools solution in Clear category for Loading Cargo by robertabegg
from itertools import combinations, chain
def checkio(data):
""" Return the smallest absolute difference of sums of the data elements
split into two lists.
"""
total = sum(data)
if len(data) < 2:
return total
combos = [c for r in range(1, len(data))
for c in chain(combinations(data, r))]
# Difference = (total - sum(c)) - sum(c) = total - 2 * sum(c)
return min(abs(total - 2 * sum(c)) for c in combos)
# These "asserts" using only for self-checking and not necessary for
# auto-testing
if __name__ == '__main__':
assert checkio([10, 10]) == 0, "1st example"
assert checkio([10]) == 10, "2nd example"
assert checkio([5, 8, 13, 27, 14]) == 3, "3rd example"
assert checkio([5, 5, 6, 5]) == 1, "4th example"
assert checkio([12, 30, 30, 32, 42, 49]) == 9, "5th example"
assert checkio([1, 1, 1, 3]) == 0, "6th example"
Sept. 30, 2021