diff options
| -rw-r--r-- | challenge-083/gugod/python/ch-2.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/challenge-083/gugod/python/ch-2.py b/challenge-083/gugod/python/ch-2.py new file mode 100644 index 0000000000..1a3a3bffc2 --- /dev/null +++ b/challenge-083/gugod/python/ch-2.py @@ -0,0 +1,31 @@ +#!/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 = sum(A) + minCombination = () + for s, c in flipCombination(A): + if s < minSum: + minSum = s + minCombination = c + if s == 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:])))) |
