mirror of
https://github.com/sstent/Advent2021.git
synced 2026-01-28 18:11:37 +00:00
first
This commit is contained in:
107
Day3_2/main.py
Normal file
107
Day3_2/main.py
Normal file
@@ -0,0 +1,107 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user