Day 8: Add Python solution
This commit is contained in:
parent
a2ca280f7e
commit
0d68e0dd9b
1 changed files with 51 additions and 0 deletions
51
08/solution.py
Executable file
51
08/solution.py
Executable file
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
|
||||
known = {2:1,3:7,4:4,7:8}
|
||||
|
||||
silver=0
|
||||
gold=0
|
||||
|
||||
for l in sys.stdin.readlines():
|
||||
i, o = [x.split() for x in l.rstrip().split(" | ")]
|
||||
|
||||
digits = {}
|
||||
for d in i:
|
||||
k = known.get(len(d))
|
||||
if k:
|
||||
digits[k] = d
|
||||
|
||||
bcdf = set(digits[4])
|
||||
cf = set(digits.get(7) or digits[1])
|
||||
eg = set("abcdefg") - cf - bcdf
|
||||
bd = bcdf - cf
|
||||
out = []
|
||||
|
||||
for d in o:
|
||||
l = len(d)
|
||||
d = set(d)
|
||||
hasbd = len(d & bd) == 2
|
||||
haseg = len(d & eg) == 2
|
||||
if l in known:
|
||||
silver += 1
|
||||
out.append(known[l])
|
||||
elif l == 5:
|
||||
if hasbd:
|
||||
out.append(5)
|
||||
elif haseg:
|
||||
out.append(2)
|
||||
else:
|
||||
out.append(3)
|
||||
elif l == 6:
|
||||
if haseg:
|
||||
if hasbd:
|
||||
out.append(6)
|
||||
else:
|
||||
out.append(0)
|
||||
else:
|
||||
out.append(9)
|
||||
|
||||
gold += int("".join([str(i) for i in out]))
|
||||
|
||||
print(f"Silver: {silver}\nGold: {gold}")
|
Loading…
Reference in a new issue