2021/day08-2.py

60 lines
1.4 KiB
Python
Raw Normal View History

2021-12-14 13:27:07 +00:00
#!/usr/bin/env python3
import fileinput
import time
lines = list(fileinput.input())
t = time.time_ns()
part2 = 0
for line in lines:
poss = {}
digits, output = (l.split() for l in str(line).split(" | "))
one = set(next(digit for digit in digits if len(digit) == 2))
four = set(next(digit for digit in digits if len(digit) == 4))
for digit in digits:
digit = "".join(sorted(digit))
digit_set = set(digit)
overlap_one = len(digit_set & one)
overlap_four = len(digit_set & four)
if len(digit) == 2: # 1
poss[digit] = 1
elif len(digit) == 3: # 7
poss[digit] = 7
elif len(digit) == 4: # 4
poss[digit] = 4
elif len(digit) == 5: # 2, 3, 5, 6
if overlap_four == 2:
poss[digit] = 2
elif overlap_one == 1:
poss[digit] = 5
else:
poss[digit] = 3
elif len(digit) == 6: # 0, 6, 9
if overlap_four == 4:
poss[digit] = 9
elif overlap_one == 2:
poss[digit] = 0
else:
poss[digit] = 6
elif len(digit) == 7:
poss[digit] = 8
result = 0
for digit in output:
digit = "".join(sorted(digit))
result = (result * 10) + poss[digit]
part2 += result
t2 = time.time_ns()
print(part2)
print(t2 - t, "ns")
print((t2 - t) // 1000, "µs")