This commit is contained in:
dave 2021-12-02 21:29:11 -08:00
parent c898811c9f
commit 09c269c9f2
3 changed files with 1089 additions and 0 deletions

33
3/a.py Normal file
View File

@ -0,0 +1,33 @@
with open("input.txt") as f:
lines = [i.strip() for i in f.readlines()]
def count_digits(ar):
zeros = [0] * len(ar[0])
ones = [0] * len(ar[0])
for row in ar:
for pos, c in enumerate(row.strip()):
(zeros if c == "0" else ones)[pos] += 1
return zeros, ones
zeros, ones = count_digits(lines)
print(zeros)
print(ones)
# lol
gamma_bits = []
epsi_bits = []
for pos, zero in enumerate(zeros):
gamma_bits.append("1" if zero < ones[pos] else "0")
epsi_bits.append("1" if zero > ones[pos] else "0")
gamma = int("".join(gamma_bits), 2)
epsi = int("".join(epsi_bits), 2)
print(gamma * epsi)

56
3/b.py Normal file
View File

@ -0,0 +1,56 @@
with open("input.txt") as f:
og_lines = [i.strip() for i in f.readlines()]
lines = og_lines[:]
def count_digits(ar):
zeros = [0] * len(ar[0])
ones = [0] * len(ar[0])
for row in ar:
for pos, c in enumerate(row.strip()):
(zeros if c == "0" else ones)[pos] += 1
return zeros, ones
def filter_by_digit(lines, position, value):
return [i for i in lines if i[position] == value]
# oxy = most common
# co2 = least common
# oxy
position = 0
while len(lines) > 1:
zeros, ones = count_digits(lines)
zeros, ones = zeros[position], ones[position]
print(zeros, ones, "pos", position, "remaining lines", len(lines))
lines = filter_by_digit(lines, position, "1" if ones >= zeros else "0")
position += 1
oxy = lines[0]
lines = og_lines[:]
# co0
position = 0
while len(lines) > 1:
zeros, ones = count_digits(lines)
zeros, ones = zeros[position], ones[position]
print(zeros, ones, "pos", position, "remaining lines", len(lines))
lines = filter_by_digit(lines, position, "0" if zeros <= ones else "1")
position += 1
co2 = lines[0]
print(int(oxy, 2) * int(co2, 2))
# 29m

1000
3/input.txt Normal file

File diff suppressed because it is too large Load Diff