Files
Advent2021/Day3_2/main.py
2021-12-06 07:37:45 -05:00

108 lines
2.5 KiB
Python

from aocd import get_data
from aocd import submit
input_data = get_data(day=3, year=2021)
test_data = """00100
11110
10110
10111
10101
01111
00111
11100
10000
11001
00010
01010"""
c02 = input_data.split("\n")
# c02 = test_data.split("\n")
line_len = len(c02[0])
oxygen = c02.copy()
c02 = c02.copy()
for i in range(line_len):
if len(oxygen) == 1:
print("only 1 left")
break
#get count for this column
counts_ones = 0
counts_zeroes = 0
for line in oxygen:
line = list(line)
bit = line[i]
if bit == "1":
counts_ones += 1
elif bit == "0":
counts_zeroes += 1
print("Zeros:" + str(counts_zeroes) + "Ones:" + str(counts_ones))
if counts_ones >= counts_zeroes:
for index, line in reversed(list(enumerate(oxygen))):
# print(line)
if line[i] == "0":
print("drop zeros in col " + str(i)+ ":" + ''.join(str(i) for i in line))
oxygen.remove(line)
elif counts_ones < counts_zeroes:
for index, line in reversed(list(enumerate(oxygen))):
if line[i] == "1":
print("drop ones in col" + str(i)+ ":" + ''.join(str(i) for i in line))
oxygen.remove(line)
print("remaining oxygen")
print(oxygen)
print(oxygen)
###CO2
for i in range(line_len):
if len(c02) == 1:
print("only 1 left")
break
#get count for this column
counts_ones = 0
counts_zeroes = 0
for line in c02:
line = list(line)
bit = line[i]
if bit == "1":
counts_ones += 1
elif bit == "0":
counts_zeroes += 1
print("Zeros:" + str(counts_zeroes) + "Ones:" + str(counts_ones))
if counts_ones < counts_zeroes:
for index, line in reversed(list(enumerate(c02))):
# print(line)
if line[i] == "0":
print("drop zeros in col " + str(i)+ ":" + ''.join(str(i) for i in line))
c02.remove(line)
elif counts_ones >= counts_zeroes:
for index, line in reversed(list(enumerate(c02))):
if line[i] == "1":
print("drop ones in col" + str(i)+ ":" + ''.join(str(i) for i in line))
c02.remove(line)
print("remaining c02")
print(c02)
print(c02)
# print(epsilon)
c02 = ''.join(str(i) for i in c02)
oxygen = ''.join(str(i) for i in oxygen)
print(str(int(c02, 2)))
print(str(int(oxygen, 2)))
powerconsumption = int(c02, 2) * int(oxygen, 2)
print(powerconsumption)
submit(powerconsumption)