08.py
1 from lib import * 2 3 input = read_input(2021, 8) 4 5 6 out = 0 7 for line in input.splitlines(): 8 _, b = map(str.split, line.split(" | ")) 9 out += sum(len(x) in [2, 4, 3, 7] for x in b) 10 print(out) 11 12 13 SEGMENTS = {k: v for v, k in enumerate([119, 18, 93, 91, 58, 107, 111, 82, 127, 123])} 14 15 16 def get(p, num): 17 return SEGMENTS.get(sum(("abcdefg"[p[i]] in num) << i for i in range(7))) 18 19 20 out = 0 21 for line in input.splitlines(): 22 a, b = map(str.split, line.split(" | ")) 23 for perm in itertools.permutations(range(7)): 24 if all(get(perm, x) is not None for x in a): 25 out += int("".join(str(get(perm, x)) for x in b)) 26 break 27 28 print(out)