From 0247ce727ade3bad685c1f52d73d8bd4aa9d6488 Mon Sep 17 00:00:00 2001 From: Andrew Ekstedt Date: Sat, 14 Dec 2024 06:07:28 +0000 Subject: [PATCH] day 14 cleanup --- day14/sample2.in | 7 ----- day14/sample3.in | 53 ---------------------------------- day14/sample4.in | 7 ----- day14/sample5.in | 7 ----- day14/sol.py | 75 ++++++++++++++++-------------------------------- 5 files changed, 24 insertions(+), 125 deletions(-) delete mode 100644 day14/sample2.in delete mode 100644 day14/sample3.in delete mode 100644 day14/sample4.in delete mode 100644 day14/sample5.in diff --git a/day14/sample2.in b/day14/sample2.in deleted file mode 100644 index 57cff58..0000000 --- a/day14/sample2.in +++ /dev/null @@ -1,7 +0,0 @@ -1.12....... -........... -........... -......11.11 -1.1........ -.........1. -.......1... diff --git a/day14/sample3.in b/day14/sample3.in deleted file mode 100644 index be65cec..0000000 --- a/day14/sample3.in +++ /dev/null @@ -1,53 +0,0 @@ -Initial state: -........... -........... -........... -........... -..1........ -........... -........... - -After 1 second: -........... -....1...... -........... -........... -........... -........... -........... - -After 2 seconds: -........... -........... -........... -........... -........... -......1.... -........... - -After 3 seconds: -........... -........... -........1.. -........... -........... -........... -........... - -After 4 seconds: -........... -........... -........... -........... -........... -........... -..........1 - -After 5 seconds: -........... -........... -........... -.1......... -........... -........... -........... diff --git a/day14/sample4.in b/day14/sample4.in deleted file mode 100644 index 3aa0303..0000000 --- a/day14/sample4.in +++ /dev/null @@ -1,7 +0,0 @@ -......2..1. -........... -1.......... -.11........ -.....1..... -...12...... -.1....1.... diff --git a/day14/sample5.in b/day14/sample5.in deleted file mode 100644 index b9485b3..0000000 --- a/day14/sample5.in +++ /dev/null @@ -1,7 +0,0 @@ -..... 2..1. -..... ..... -1.... ..... - -..... ..... -...12 ..... -.1... 1.... diff --git a/day14/sol.py b/day14/sol.py index 9b25c16..88d85bc 100644 --- a/day14/sol.py +++ b/day14/sol.py @@ -9,68 +9,42 @@ def parse(file): def solve(file, W, H): robots = parse(file) - print(robots) - robots = [iterate(r, 100, W, H) for r in robots] - print(robots) - mx = W//2 - my = H//2 - quads = {1:[], 2:[], 3:[], 4:[]} - print(mx,my) - for (x,y),_ in robots: - q = 0 - if x < mx and y < my: q = 1 - if x > mx and y < my: q = 2 - if x < mx and y > my: q = 3 - if x > mx and y > my: q = 4 - if q > 0: - quads[q].append((x,y)) - print(quads) + #print(robots) - total = 1 - for v in quads.values(): - total *= len(v) + robots100 = [iterate(r, 100, W, H) for r in robots] + #print(robots100) - print(total) + q = quad_score(robots100, W, H) + print(q) -def solve2(file, W, H): - robots = parse(file) - mq = float('inf') + minq = float('inf') + mint = 0 for t in range(0, W*H): - rs = lambda: (iterate(r, t, W, H) for r in robots) - q = quads(rs(), W, H) - qs = q[0]*q[1]*q[2]*q[3] - if mq > qs: - mq = qs - if qs == mq: - picture = [["."]*W for _ in range(H)] - for (x,y),_ in rs(): - if y < H: - picture[y][x] = "#" - for line in picture: - print("".join(line)) - print("t = ", t, "q = ", qs) - - #input(">") + rs = (iterate(r, t, W, H) for r in robots) + q = quad_score(rs, W, H) + if minq > q: + minq = q + mint = t - # 442? - # 493 - + picture = [["."]*W for _ in range(H)] + for r in robots: + (x,y),_ = iterate(r, mint, W, H) + picture[y][x] = "#" + for line in picture: + print("".join(line)) -def quads(robots, W, H): + print("t = ", mint, "q = ", minq) + +def quad_score(robots, W, H): mx = W//2 my = H//2 q1, q2, q3, q4 = 0, 0, 0, 0 - #seen = set() - for (x,y),_ in robots: - #if (x,y) in seen: - # continue - #seen.add((x,y)) if x < mx and y < my: q1 += 1 if x > mx and y < my: q2 += 1 if x < mx and y > my: q3 += 1 if x > mx and y > my: q4 += 1 - return [q1, q2, q3, q4] + return q1*q2*q3*q4 def iterate(robot, t, W, H): (px,py), (vx,vy) = robot @@ -78,6 +52,5 @@ def iterate(robot, t, W, H): py = (py+vy*t)%H return (px,py), (vx,vy) -#solve(open("sample1.in"), 11, 7) -#solve(open("input"), 101, 103) -solve2(open("input"), 101, 103) +solve(open("sample1.in"), 11, 7) +solve(open("input"), 101, 103)