Advertisement
Guest User

Advent of Code day 10

a guest
Dec 10th, 2018
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.73 KB | None | 0 0
  1. from itertools import count
  2. import re
  3. import numpy as np
  4.  
  5. def day10_data():
  6.     with open('10.txt') as f:
  7.         for line in f:
  8.             m = re.match(r'position=< *(-?\d+), *(-?\d+)> '
  9.                          r'velocity=< *(-?\d+), *(-?\d+)>', line)
  10.             yield list(map(int, m.groups()))
  11.  
  12. def day10():
  13.     data = np.array(list(day10_data()))
  14.     p, v = data[:,:2], data[:,2:]
  15.     def size(p): return p.ptp(axis=0).prod()
  16.     for i in count():
  17.         if size(p + v) > size(p):
  18.             return i, p
  19.         p += v
  20.  
  21. def day10_draw(p):
  22.     canvas = np.zeros(p.ptp(axis=0) + 1, dtype=int)
  23.     x, y = (p - p.min(axis=0)).T
  24.     canvas[x, y] = 1
  25.     for row in canvas.T:
  26.         print(''.join(' *'[c] for c in row))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement