/ Python / 2021 / 08.py
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)