From 1414bb26e7b9dcfdde68fee7d0816a35bdc7e683 Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Sat, 17 Dec 2022 11:54:31 -0500 Subject: [PATCH] oof --- 2022/python/15.png | Bin 0 -> 35766 bytes 2022/python/day16.py | 21 ++++++++++----------- 2 files changed, 10 insertions(+), 11 deletions(-) create mode 100644 2022/python/15.png diff --git a/2022/python/15.png b/2022/python/15.png new file mode 100644 index 0000000000000000000000000000000000000000..1859005895b14c3c49e323acffdad745f9212daf GIT binary patch literal 35766 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 DqkA}` literal 0 HcmV?d00001 diff --git a/2022/python/day16.py b/2022/python/day16.py index fc60103..6fb61e4 100644 --- a/2022/python/day16.py +++ b/2022/python/day16.py @@ -43,11 +43,11 @@ def parse(rows): def part1(rows, sample=False): - p1 = Part1(rows, sample, 30) + p1 = Volcano(rows, sample, 30) p1.run() -class Part1: +class Volcano: def __init__(self, rows, sample, minutes): self.rows = rows self.sample = sample @@ -78,9 +78,7 @@ class Part1: if other == lbl: continue self.path_distances[lbl][other] = l[lbl][other] - # min( - # [len(x) for x in nx.shortest_simple_paths(self.g, lbl, other)] - # ) + self.draw() def do_tick(self, minute): pressure = 0 @@ -120,7 +118,6 @@ class Part1: pprint(_pris) return _pris - remaining = self.minutes open_order = [] while len(self.nonzero): @@ -141,15 +138,14 @@ class Part1: del self.nonzero[nxt] # keep track of which order opened open_order.append(n.label) - - print("\tMoving to", nxt) - print("\tOpening", n.label) - #distance = self.path_distances[self.cur][n.label] self.cur = n.label self.valves[self.cur].opened_at = self.minutes - (remaining - 1) + self.do_tick(self.minutes+1-remaining) + print("\tMoving to", n.label) + print("\tOpening ", n.label) + print() - # Tick tick tick remaining -= distance # Move print("\t\tMoved", distance,"distance/minutes") remaining -= 1 # open @@ -164,6 +160,9 @@ class Part1: print("total flow:", self.calculate_total_flow()) +def part2(rows, sample=False): + p2 = Volcano(rows, sample, 26) + p2.run() def main(): sample = False