aboutsummaryrefslogtreecommitdiff
path: root/challenge-083/gugod/python/ch-2.py
blob: b62e58d93077a86feb3999c1a7d84ec30434d0ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env python3
import sys
import itertools

def flipCombination(A):
    minSum = nSum = sum(A)
    minCombination = ()
    for k in range(1, len(A)):
        for c in itertools.combinations(A, k):
            s = nSum - 2 * sum(c)
            if 0 <= s < minSum:
                minCombination = c
                minSum = s
                yield minSum, minCombination


def flipElems(A):
    minSum = 0
    minCombination = ()
    for minSum, minCombination in flipCombination(A):
        if minSum == 0:
            break
    print(f'>> {minSum} = sum({A}) - 2 * sum({minCombination})')
    return len(minCombination)

# print(flipElems([2,13,10,8]))   # 2
# print(flipElems([10,12,2]))   # 1
print(flipElems(list(map(int, sys.argv[1:]))))