2018 Day 10 numpy cleanup
This commit is contained in:
parent
61bccd5e8f
commit
6ee1e60a84
|
@ -1,27 +1,21 @@
|
|||
with open('day10-input', 'r') as file:
|
||||
data = [l.strip('\n') for l in file]
|
||||
import numpy as np
|
||||
import re
|
||||
|
||||
positions = []
|
||||
velocities = []
|
||||
|
||||
for line in data:
|
||||
pos = [int(line[10:16]), -int(line[18:24])] # Invert Y for graphing purposes
|
||||
vel = [int(line[36:38]), -int(line[39:42])] # Invert Y for graphing purposes
|
||||
positions.append(pos)
|
||||
velocities.append(vel)
|
||||
numbers = np.array([[int(s) for s in re.findall(r'-?\d+', d)] for d in data], dtype=np.int64)
|
||||
start_positions = numbers[:,:2]
|
||||
velocities = numbers[:,2:]
|
||||
|
||||
max_t = 11000
|
||||
curr_pos = np.vstack(positions)
|
||||
vels = np.vstack(velocities)
|
||||
positions = np.empty((385,2,max_t))
|
||||
heights = np.empty(max_t, dtype=np.int64)
|
||||
|
||||
positions = np.empty((*start_positions.shape, max_t))
|
||||
for t in range(max_t):
|
||||
positions[:,:,t] = curr_pos + t*vels
|
||||
heights[t] = positions[:,1,t].max() - positions[:,1,t].min()
|
||||
positions[:,:,t] = start_positions + t*velocities
|
||||
|
||||
heights = positions[:,1,:].max(0)-positions[:,1,:].min(0)
|
||||
t = np.argmin(heights)
|
||||
|
||||
|
||||
from pyqtgraph.Qt import QtCore, QtGui
|
||||
import pyqtgraph as pg
|
||||
|
||||
|
@ -31,10 +25,10 @@ win.resize(2000,600)
|
|||
win.setWindowTitle('Scatter Plot')
|
||||
win.show()
|
||||
|
||||
p5 = win.addPlot(title=f't={t}')
|
||||
p5.plot(positions[:,:,t], pen=None, symbol='s', symbolPen=None, symbolSize=10, symbolBrush=(100, 100, 255, 250))
|
||||
plot = win.addPlot(title=f't={t}')
|
||||
plot.plot(positions[:,:,t], pen=None, symbol='s', symbolPen=None, symbolSize=10, symbolBrush=(100, 100, 255, 250))
|
||||
plot.getViewBox().invertY(True)
|
||||
|
||||
## Start Qt event loop unless running in interactive mode.
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
|
||||
|
|
Loading…
Reference in New Issue