123456789101112131415161718192021222324252627282930313233 |
- from util import get_input
- input = get_input('3.input')
- def count(input):
- counts = [0 for _ in input[0]]
- for line in input:
- for i, c in enumerate(line):
- counts[i] += 1 if c == '1' else 0
- return counts
- gamma = ''.join(['1' if c > len(input) / 2 else '0' for c in count(input)])
- epsilon = ''.join(['0' if c > len(input) / 2 else '1' for c in count(input)])
- print(int(gamma, 2) * int(epsilon, 2))
- def search(input, invert):
- remaining = list(input)
- pos = 0
- while len(remaining) > 1:
- print(len(remaining))
- cmp = count(remaining)[pos] >= len(remaining) / 2
- if invert:
- cmp = not cmp
- target = '1' if cmp else '0'
- remaining = [a for a in remaining if a[pos] == target]
- pos += 1
- return remaining[0]
- ox = search(input, False)
- co = search(input, True)
- print(int(ox, 2) * int(co, 2))
|