diff options
| author | Thomas Schmucker <ts@its1.de> | 2023-12-31 09:37:52 +0100 |
|---|---|---|
| committer | Thomas Schmucker <ts@its1.de> | 2023-12-31 09:37:52 +0100 |
| commit | 43e8adeff6306073bf58631be796f409f293997f (patch) | |
| tree | a928a47af5ce040a4868da54d6970671237ec92f /src/day24.py | |
| parent | 0d06788586cda1b1ba01524f4ba3cad147052203 (diff) | |
| download | advent-of-code-43e8adeff6306073bf58631be796f409f293997f.tar.gz advent-of-code-43e8adeff6306073bf58631be796f409f293997f.tar.bz2 advent-of-code-43e8adeff6306073bf58631be796f409f293997f.zip | |
Lösungen für Tag 24, Teil 2 (mit Z3 als Solver :/ ...)
Diffstat (limited to 'src/day24.py')
| -rw-r--r-- | src/day24.py | 33 |
1 files changed, 0 insertions, 33 deletions
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 @@ | |||
| 1 | class Hailstone: | ||
| 2 | def __init__(self, sx, sy, sz, vx, vy, vz): | ||
| 3 | self.sx = sx | ||
| 4 | self.sy = sy | ||
| 5 | self.sz = sz | ||
| 6 | self.vx = vx | ||
| 7 | self.vy = vy | ||
| 8 | self.vz = vz | ||
| 9 | |||
| 10 | self.a = vy | ||
| 11 | self.b = -vx | ||
| 12 | self.c = vy * sx - vx * sy | ||
| 13 | |||
| 14 | def __repr__(self): | ||
| 15 | return "Hailstone{" + f"a={self.a}, b={self.b}, c={self.c}" + "}" | ||
| 16 | |||
| 17 | hailstones = [Hailstone(*map(int, line.replace("@", ",").split(","))) for line in open("data/day24.txt")] | ||
| 18 | |||
| 19 | total = 0 | ||
| 20 | |||
| 21 | for i, hs1 in enumerate(hailstones): | ||
| 22 | for hs2 in hailstones[:i]: | ||
| 23 | a1, b1, c1 = hs1.a, hs1.b, hs1.c | ||
| 24 | a2, b2, c2 = hs2.a, hs2.b, hs2.c | ||
| 25 | if a1 * b2 == b1 * a2: | ||
| 26 | continue | ||
| 27 | x = (c1 * b2 - c2 * b1) / (a1 * b2 - a2 * b1) | ||
| 28 | y = (c2 * a1 - c1 * a2) / (a1 * b2 - a2 * b1) | ||
| 29 | if 200000000000000 <= x <= 400000000000000 and 200000000000000 <= y <= 400000000000000: | ||
| 30 | if all((x - hs.sx) * hs.vx >= 0 and (y - hs.sy) * hs.vy >= 0 for hs in (hs1, hs2)): | ||
| 31 | total += 1 | ||
| 32 | |||
| 33 | print(total) | ||
