From 43e8adeff6306073bf58631be796f409f293997f Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sun, 31 Dec 2023 09:37:52 +0100 Subject: Lösungen für Tag 24, Teil 2 (mit Z3 als Solver :/ ...) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/day24.py | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 src/day24.py (limited to 'src/day24.py') diff --git a/src/day24.py b/src/day24.py deleted file mode 100644 index 809f2d0..0000000 --- a/src/day24.py +++ /dev/null @@ -1,33 +0,0 @@ -class Hailstone: - def __init__(self, sx, sy, sz, vx, vy, vz): - self.sx = sx - self.sy = sy - self.sz = sz - self.vx = vx - self.vy = vy - self.vz = vz - - self.a = vy - self.b = -vx - self.c = vy * sx - vx * sy - - def __repr__(self): - return "Hailstone{" + f"a={self.a}, b={self.b}, c={self.c}" + "}" - -hailstones = [Hailstone(*map(int, line.replace("@", ",").split(","))) for line in open("data/day24.txt")] - -total = 0 - -for i, hs1 in enumerate(hailstones): - for hs2 in hailstones[:i]: - a1, b1, c1 = hs1.a, hs1.b, hs1.c - a2, b2, c2 = hs2.a, hs2.b, hs2.c - if a1 * b2 == b1 * a2: - continue - x = (c1 * b2 - c2 * b1) / (a1 * b2 - a2 * b1) - y = (c2 * a1 - c1 * a2) / (a1 * b2 - a2 * b1) - if 200000000000000 <= x <= 400000000000000 and 200000000000000 <= y <= 400000000000000: - if all((x - hs.sx) * hs.vx >= 0 and (y - hs.sy) * hs.vy >= 0 for hs in (hs1, hs2)): - total += 1 - -print(total) -- cgit v1.3