This commit is contained in:
Jed
2021-12-03 00:52:39 -05:00
parent 3ebbc0655b
commit 0970c28f26
9 changed files with 2516 additions and 0 deletions

1000
2021/03.input Normal file

File diff suppressed because it is too large Load Diff

88
2021/03.py Normal file
View File

@@ -0,0 +1,88 @@
with open('./2021/03.input', 'r') as input_file:
# with open('./2021/03.test', 'r') as input_file:
input_data = input_file.read()
working_data = input_data.split('\n')
working_dict = {}
for one_row in working_data:
for i in range(len(working_data[0])):
if i not in working_dict.keys():
working_dict[i] = {}
one_dict = {}
one_dict[0] = 0
one_dict[1] = 1
working_dict[i] = one_dict
working_dict[i][int(one_row[i])] += 1
# Make gamma / epsilon
gamma = ''
epsilon = ''
for one_column, one_item in working_dict.items():
if one_item[0] > one_item[1]:
gamma = gamma + '0'
epsilon = epsilon + '1'
else:
gamma = gamma + '1'
epsilon = epsilon + '0'
print(int(gamma, 2) * int(epsilon, 2))
# Part 2
co2_data = working_data.copy()
index = 0
count_0 = 0
count_1 = 1
output = ""
while len(co2_data) > 1 and index < len(co2_data[0]):
# Get count at index
for i in range(len(co2_data)):
if co2_data[i][index] == "0":
count_0 += 1
if co2_data[i][index] == "1":
count_1 += 1
# Get highest bit
if count_0 < count_1:
output = output + "0"
if count_0 > count_1:
output = output + "1"
if count_0 == count_1:
output = output + "0"
# Filter out anything without this bit
co2_data = [x for x in co2_data if x[index] == output[index]]
count_0 = 0
count_1 = 0
index += 1
o2_data = working_data.copy()
output = ""
index = 0
while len(o2_data) > 1 and index < len(o2_data[0]):
count_0 = 0
count_1 = 0
# Get count at index
for i in range(len(o2_data)):
if o2_data[i][index] == "0":
count_0 += 1
if o2_data[i][index] == "1":
count_1 += 1
# Get highest bit
if count_0 < count_1:
output = output + "1"
if count_0 > count_1:
output = output + "0"
if count_0 == count_1:
output = output + "1"
# Filter out anything without this bit
o2_data = [x for x in o2_data if x[index] == output[index]]
index += 1
print(int(o2_data[0], 2) * int(co2_data[0], 2))

12
2021/03.test Normal file
View File

@@ -0,0 +1,12 @@
00100
11110
10110
10111
10101
01111
00111
11100
10000
11001
00010
01010