diff options
Diffstat (limited to 'challenge-245/sgreen/python/ch-2.py')
| -rwxr-xr-x | challenge-245/sgreen/python/ch-2.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/challenge-245/sgreen/python/ch-2.py b/challenge-245/sgreen/python/ch-2.py new file mode 100755 index 0000000000..20098f5788 --- /dev/null +++ b/challenge-245/sgreen/python/ch-2.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +from itertools import permutations +import sys + + +def largest_number(numbers): + # Calculate the largest number using the all supplied numbers + largest = 0 + for i in permutations(map(lambda x: str(x), numbers)): + n = int(''.join(i)) + if n > largest: + largest = n + + return largest + + +def main(ints): + largest = -1 + for bitwise in range(1, 2 ** len(ints)): + numbers = [n for i, n in enumerate(ints) if bitwise & (2 ** i)] + if sum(numbers) % 3 != 0: + # There is no possible solution with this set of numbers + continue + + this_largest = largest_number(numbers) + if this_largest > largest: + largest = this_largest + + print(largest) + + +if __name__ == '__main__': + # Convert input into integers + array = [int(n) for n in sys.argv[1:]] + main(array) |
