Advertisement
Lyuben_Andreev

AdventOfCode3Part2

Oct 10th, 2024
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.90 KB | Software | 0 0
  1. import re
  2. from operator import mul
  3.  
  4. with open('puzzle.txt', 'r') as f:
  5.     puzzle_input = f.read()
  6.  
  7.  
  8.  
  9.  
  10. def part2(puzzle_input):
  11.     lines = puzzle_input.split('\n')
  12.  
  13.     gear_regex = r'\*'
  14.     gears = dict()
  15.     for i, line in enumerate(lines):
  16.         for m in re.finditer(gear_regex, line):
  17.             gears[(i, m.start())] = []
  18.  
  19.     number_regex = r'\d+'
  20.     for i, line in enumerate(lines):
  21.         for m in re.finditer(number_regex, line):
  22.             for r in range(i - 1, i + 2):
  23.                 for c in range(m.start() - 1, m.end() + 1):
  24.                     if (r, c) in gears:
  25.                         gears[(r, c)].append(int(m.group()))
  26.  
  27.     gear_ratio_sum = 0
  28.     for nums in gears.values():
  29.         if len(nums) == 2:
  30.             gear_ratio_sum += mul(*nums)
  31.  
  32.     return gear_ratio_sum
  33.  
  34. # eval('*'.join(str(item) for item in list))
  35.  
  36.  
  37. print('Part 2:', part2(puzzle_input))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement