Advertisement
illuminati229

AoC 2022 Day 10

Dec 10th, 2022 (edited)
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.07 KB | None | 0 0
  1. def day10(filepath, draw_screen=False):
  2.     with open(filepath) as fin:
  3.         lines = [line.split() for line in fin.readlines()]
  4.  
  5.     signal = [1]
  6.     add_x = 0
  7.     for line in lines:
  8.         if line[0] == 'noop':
  9.             signal.append(signal[-1] + add_x)
  10.             add_x = 0
  11.         elif line[0] == 'addx':
  12.             signal.append(signal[-1] + add_x)
  13.             signal.append(signal[-1])
  14.             add_x = int(line[1])
  15.  
  16.     if not draw_screen:
  17.         strength = 0
  18.         for i in [20, 60, 100, 140, 180, 220]:
  19.             strength += i * signal[i]
  20.         return strength
  21.     else:
  22.         screen = ''
  23.         for i in range(len(signal)-1):
  24.             if signal[i+1] - 1 <= i % 40 <= signal[i+1] + 1:
  25.                 screen += '#'
  26.             else:
  27.                 screen += '.'
  28.         print()
  29.         for i in range(40,241,40):
  30.             print(screen[i-40:i])
  31.  
  32.  
  33. def main():
  34.     assert day10('test10') == 13140
  35.     print(day10('input10'))
  36.  
  37.     day10('test10', True)
  38.     day10('input10', True)
  39.  
  40.  
  41. if __name__ == '__main__':
  42.     main()
  43.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement