Add day 3 solution

This commit is contained in:
2021-12-03 17:20:32 +01:00
parent e5f751fd0f
commit 93b7bbedca
2 changed files with 1066 additions and 0 deletions

66
day-03/day-03.py Normal file
View File

@@ -0,0 +1,66 @@
#!/usr/bin/python3
def part_1(input):
result = 0
gamma = 0
epsilon = 0
num_bits = len(input[0]) - 1
counts = [0] * num_bits
for line in input:
line = int(line, 2)
for i in range(num_bits):
shift = (num_bits - i - 1)
mask = 1 << shift
if mask & line:
counts[i] += 1
for count in counts:
gamma <<= 1
epsilon <<= 1
if len(input)/2 < count:
gamma |= 1
else:
epsilon |= 1
result = gamma * epsilon
print("Part 1 result:", result)
def part_2(input):
result = 0
num_bits = len(input[0]) - 1
oxy_list = input.copy()
co2_list = input.copy()
for i in range(num_bits):
shift = (num_bits - i - 1)
mask = 1 << shift
count = 0
for element in list(oxy_list):
if int(element, 2) & mask:
count += 1
digit = 0
if (len(oxy_list)/2) <= count:
digit = 1
for element in list(oxy_list):
if (int(element, 2) & mask) >> shift != digit:
if 1 < len(oxy_list):
oxy_list.remove(element)
count = 0
for element in list(co2_list):
if int(element, 2) & mask:
count += 1
digit = 1
if (len(co2_list)/2) <= count:
digit = 0
for element in list(co2_list):
if (int(element, 2) & mask) >> shift != digit:
if 1 < len(co2_list):
co2_list.remove(element)
result = int(oxy_list[0], 2) * int(co2_list[0], 2)
print("Part 2 result:", result)
input = list()
with open('input.txt') as fp:
input = fp.readlines()
part_1(input)
part_2(input)

1000
day-03/input.txt Normal file

File diff suppressed because it is too large Load Diff