mirror of
https://github.com/Xevion/advent-of-code.git
synced 2025-12-05 23:14:16 -06:00
timing and remove unused calc func day 10
This commit is contained in:
@@ -1,12 +1,11 @@
|
|||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
from collections import namedtuple
|
|
||||||
|
|
||||||
|
|
||||||
# Constants
|
# Constants
|
||||||
|
|
||||||
@@ -24,9 +23,6 @@ class MovingPoint(object):
|
|||||||
self.pos = [int(match.group(1)), int(match.group(2))]
|
self.pos = [int(match.group(1)), int(match.group(2))]
|
||||||
self.vel = [int(match.group(3)), int(match.group(4))]
|
self.vel = [int(match.group(3)), int(match.group(4))]
|
||||||
|
|
||||||
def calculate(self, t):
|
|
||||||
return Point(self.pos[0] + (self.vel[0] * t), self.pos[1] + (self.vel[1] * t))
|
|
||||||
|
|
||||||
def simulate(self, t=1):
|
def simulate(self, t=1):
|
||||||
self.pos[0] += self.vel[0] * t
|
self.pos[0] += self.vel[0] * t
|
||||||
self.pos[1] += self.vel[1] * t
|
self.pos[1] += self.vel[1] * t
|
||||||
@@ -34,6 +30,8 @@ class MovingPoint(object):
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"<MovingPoint pos({self.pos[0]}, {self.pos[1]}) vel({self.vel[0]}, {self.vel[1]})"
|
return f"<MovingPoint pos({self.pos[0]}, {self.pos[1]}) vel({self.vel[0]}, {self.vel[1]})"
|
||||||
|
|
||||||
|
|
||||||
|
# Matrix class for managing a list of points and quickly running simulation
|
||||||
class Matrix(object):
|
class Matrix(object):
|
||||||
def __init__(self, input):
|
def __init__(self, input):
|
||||||
self.points = []
|
self.points = []
|
||||||
@@ -79,12 +77,14 @@ print('Matrix built, copy made.')
|
|||||||
|
|
||||||
# Simulate all likely points in time of message
|
# Simulate all likely points in time of message
|
||||||
print('Simulating')
|
print('Simulating')
|
||||||
|
t1 = time.time()
|
||||||
for i in range(11000):
|
for i in range(11000):
|
||||||
difX = abs(matrix.maxX - matrix.minX)
|
difX = abs(matrix.maxX - matrix.minX)
|
||||||
difY = abs(matrix.maxY - matrix.minY)
|
difY = abs(matrix.maxY - matrix.minY)
|
||||||
difs.append(difX + difY)
|
difs.append(difX + difY)
|
||||||
matrix.simulate(1)
|
matrix.simulate(1)
|
||||||
print('Simulated')
|
t2 = time.time()
|
||||||
|
print(f'Simulated in {round(t2 - t1, 2)} seconds')
|
||||||
|
|
||||||
# Point in time where all points are closest
|
# Point in time where all points are closest
|
||||||
best = min(list(enumerate(difs)), key=lambda x:x[1])
|
best = min(list(enumerate(difs)), key=lambda x:x[1])
|
||||||
|
|||||||
Reference in New Issue
Block a user