From 0b38b0f7fdfd48c2ed47e65162b1cce381e931f8 Mon Sep 17 00:00:00 2001 From: AKP Date: Fri, 16 Dec 2022 01:37:21 +0000 Subject: [PATCH] 2022-15 py Signed-off-by: AKP --- .../2022/14-regolithReservoir/py/__init__.py | 17 +-- .../2022/15-beaconExclusionZone/README.md | 1 + .../15-beaconExclusionZone/benchmark.json | 15 ++ .../2022/15-beaconExclusionZone/info.json | 17 +++ .../15-beaconExclusionZone/py/__init__.py | 143 ++++++++++++++++++ challenges/2022/README.md | 2 +- challenges/2022/running-times.png | Bin 52774 -> 51790 bytes lib/aocpy/__init__.py | 50 +++++- 8 files changed, 233 insertions(+), 12 deletions(-) create mode 100644 challenges/2022/15-beaconExclusionZone/README.md create mode 100644 challenges/2022/15-beaconExclusionZone/benchmark.json create mode 100644 challenges/2022/15-beaconExclusionZone/info.json create mode 100644 challenges/2022/15-beaconExclusionZone/py/__init__.py diff --git a/challenges/2022/14-regolithReservoir/py/__init__.py b/challenges/2022/14-regolithReservoir/py/__init__.py index 3e672eb..14e5e2a 100644 --- a/challenges/2022/14-regolithReservoir/py/__init__.py +++ b/challenges/2022/14-regolithReservoir/py/__init__.py @@ -35,14 +35,14 @@ def parse(instr: str) -> Tuple[Scan, Vector, Vector]: f = lambda x, y: x + y if dy < 0: f = lambda x, y: x - y - + for j in range(abs(dy) + 1): res[(points[i][0], f(points[i][1], j))] = State.WALL else: f = lambda x, y: x + y if dx < 0: f = lambda x, y: x - y - + for j in range(abs(dx) + 1): res[(f(points[i][0], j), points[i][1])] = State.WALL @@ -51,16 +51,11 @@ def parse(instr: str) -> Tuple[Scan, Vector, Vector]: max_x = max(keys, key=lambda x: x[0])[0] min_y = min(keys, key=lambda x: x[1])[1] max_y = max(keys, key=lambda x: x[1])[1] - + return res, (min_x, min_y), (max_x, max_y) -def is_out_of_bounds(v: Vector, min_v: Vector, max_v: Vector) -> bool: - return not ((min_v[0] <= v[0] <= max_v[0]) and (0 <= v[1] <= max_v[1])) - - class Challenge(BaseChallenge): - @staticmethod def one(instr: str) -> int: inp, min_pos, max_pos = parse(instr) @@ -68,7 +63,9 @@ class Challenge(BaseChallenge): cursor = (500, 0) grains = 0 - while not is_out_of_bounds(cursor, min_pos, max_pos): + while (min_pos[0] <= cursor[0] <= max_pos[0]) and ( + 0 <= cursor[1] <= max_pos[1] + ): x, y = cursor if inp.get((x, y + 1)) is None: @@ -91,7 +88,7 @@ class Challenge(BaseChallenge): @staticmethod def two(instr: str) -> int: - inp, min_pos, max_pos = parse(instr) + inp, _, max_pos = parse(instr) max_pos = (max_pos[0], max_pos[1] + 2) diff --git a/challenges/2022/15-beaconExclusionZone/README.md b/challenges/2022/15-beaconExclusionZone/README.md new file mode 100644 index 0000000..4f367ab --- /dev/null +++ b/challenges/2022/15-beaconExclusionZone/README.md @@ -0,0 +1 @@ +# [Day 15: Beacon Exclusion Zone](https://adventofcode.com/2022/day/15) diff --git a/challenges/2022/15-beaconExclusionZone/benchmark.json b/challenges/2022/15-beaconExclusionZone/benchmark.json new file mode 100644 index 0000000..f4a369f --- /dev/null +++ b/challenges/2022/15-beaconExclusionZone/benchmark.json @@ -0,0 +1,15 @@ +{ + "day": 15, + "dir": "challenges/2022/15-beaconExclusionZone", + "implementations": { + "Python": { + "part.1.avg": 2.488755464553833, + "part.1.max": 2.488755464553833, + "part.1.min": 2.488755464553833, + "part.2.avg": 295.4520, + "part.2.max": 295.4520, + "part.2.min": 295.4520 + } + }, + "numRuns": 1 +} \ No newline at end of file diff --git a/challenges/2022/15-beaconExclusionZone/info.json b/challenges/2022/15-beaconExclusionZone/info.json new file mode 100644 index 0000000..a7a9787 --- /dev/null +++ b/challenges/2022/15-beaconExclusionZone/info.json @@ -0,0 +1,17 @@ +{ + "inputFile": "input.txt", + "testCases": { + "one": [ + { + "input": "Sensor at x=2, y=18: closest beacon is at x=-2, y=15\nSensor at x=9, y=16: closest beacon is at x=10, y=16\nSensor at x=13, y=2: closest beacon is at x=15, y=3\nSensor at x=12, y=14: closest beacon is at x=10, y=16\nSensor at x=10, y=20: closest beacon is at x=10, y=16\nSensor at x=14, y=17: closest beacon is at x=10, y=16\nSensor at x=8, y=7: closest beacon is at x=2, y=10\nSensor at x=2, y=0: closest beacon is at x=2, y=10\nSensor at x=0, y=11: closest beacon is at x=2, y=10\nSensor at x=20, y=14: closest beacon is at x=25, y=17\nSensor at x=17, y=20: closest beacon is at x=21, y=22\nSensor at x=16, y=7: closest beacon is at x=15, y=3\nSensor at x=14, y=3: closest beacon is at x=15, y=3\nSensor at x=20, y=1: closest beacon is at x=15, y=3\n", + "expected": "26" + } + ], + "two": [ + { + "input": "Sensor at x=2, y=18: closest beacon is at x=-2, y=15\nSensor at x=9, y=16: closest beacon is at x=10, y=16\nSensor at x=13, y=2: closest beacon is at x=15, y=3\nSensor at x=12, y=14: closest beacon is at x=10, y=16\nSensor at x=10, y=20: closest beacon is at x=10, y=16\nSensor at x=14, y=17: closest beacon is at x=10, y=16\nSensor at x=8, y=7: closest beacon is at x=2, y=10\nSensor at x=2, y=0: closest beacon is at x=2, y=10\nSensor at x=0, y=11: closest beacon is at x=2, y=10\nSensor at x=20, y=14: closest beacon is at x=25, y=17\nSensor at x=17, y=20: closest beacon is at x=21, y=22\nSensor at x=16, y=7: closest beacon is at x=15, y=3\nSensor at x=14, y=3: closest beacon is at x=15, y=3\nSensor at x=20, y=1: closest beacon is at x=15, y=3\n", + "expected": "56000011" + } + ] + } +} \ No newline at end of file diff --git a/challenges/2022/15-beaconExclusionZone/py/__init__.py b/challenges/2022/15-beaconExclusionZone/py/__init__.py new file mode 100644 index 0000000..9365efc --- /dev/null +++ b/challenges/2022/15-beaconExclusionZone/py/__init__.py @@ -0,0 +1,143 @@ +from __future__ import annotations +import sys +from typing import * +from aocpy import BaseChallenge, Vector, foldl +import re +from dataclasses import dataclass +import portion as P + + +@dataclass +class Line: + m: int + c: int + + @staticmethod + def from_points(a: Vector, b: Vector) -> Line: + calc_m = (b.y - a.y) / (b.x - a.x) + calc_c = a.y - (calc_m * a.x) + return Line(int(calc_m), int(calc_c)) + + +parse_re = re.compile( + r"Sensor at x=(-?\d+), y=(-?\d+): closest beacon is at x=(-?\d+), y=(-?\d+)" +) + + +def parse(instr: str) -> List[Tuple[Vector, Vector]]: + res = [] + for line in instr.strip().splitlines(): + sensor_x, sensor_y, beacon_x, beacon_y = map(int, parse_re.match(line).groups()) + res.append( + ( + Vector(sensor_x, sensor_y), + Vector(beacon_x, beacon_y), + ) + ) + return res + + +def postprocess( + inp: List[Tuple[Vector, Vector]] +) -> Tuple[ + Dict[Vector, Tuple[Vector, Vector, Vector, Vector]], + Dict[Vector, Tuple[Line, Line, Line, Line]], +]: + # 0 top, 1 left, 2 right, 3 bottom + sensor_points: Dict[Vector, Tuple[Vector, Vector, Vector, Vector]] = {} + sensor_lines: Dict[Vector, Tuple[Line, Line, Line, Line]] = {} + + for (sensor, beacon) in inp: + mh = sensor.manhattan_distance(beacon) + points = ( + Vector(sensor.x, sensor.y - mh), + Vector(sensor.x - mh, sensor.y), + Vector(sensor.x + mh, sensor.y), + Vector(sensor.x, sensor.y + mh), + ) + sensor_points[sensor] = points + + lines = ( + Line.from_points(points[1], points[0]), + Line.from_points(points[3], points[1]), + Line.from_points(points[2], points[0]), + Line.from_points(points[2], points[3]), + ) + sensor_lines[sensor] = lines + + return sensor_points, sensor_lines + + +class Challenge(BaseChallenge): + @staticmethod + def one(instr: str) -> int: + inp = parse(instr) + sensor_points, sensor_lines = postprocess(inp) + + target_line = 10 if len(inp) == 14 else 2000000 + ranges: List[Tuple[int, int]] = [] + + for (sensor, _) in inp: + points = sensor_points[sensor] + # print("polygon(", (", ".join(map(str, (points[0], points[1], points[3], points[2])))), ")") + lines = sensor_lines[sensor] + if points[0].y <= target_line <= points[3].y: + if target_line == points[1].y: + ranges.append((points[2].x, points[1].x)) + elif points[0].y <= target_line < points[1].y: + ranges.append( + ( + int((target_line - lines[2].c) / lines[2].m), + int((target_line - lines[0].c) / lines[0].m), + ) + ) + else: + ranges.append( + ( + int((target_line - lines[3].c) / lines[3].m), + int((target_line - lines[1].c) / lines[1].m), + ) + ) + + s: Set[int] = set() + for x in ranges: + s = s.union(set(range(x[1], x[0] + 1))) + + for (_, beacon) in inp: + if beacon.y == target_line: + s.discard(beacon.x) + + return len(s) + + @staticmethod + def two(instr: str) -> int: + inp = parse(instr) + sensor_points, sensor_lines = postprocess(inp) + + max_coord = 20 if len(inp) == 14 else 4000000 + line_ranges: List[P.Interval] = [P.empty() for _ in range(max_coord + 1)] + + for (sensor, _) in inp: + p0, p1, p2, p3 = sensor_points[sensor] + l0, l1, l2, l3 = sensor_lines[sensor] + + for y in range(max(p0.y, 0), min(p3.y, max_coord) + 1): + a: int + b: int + if y == sensor.y: + a, b = p1.x, p2.x + elif p0.y <= y < p1.y: + a, b = int((y - l0.c) / l0.m), int((y - l2.c) / l2.m) + else: + a, b = int((y - l1.c) / l1.m), int((y - l3.c) / l3.m) + + line_ranges[y] = line_ranges[y] | P.closed( + max(a, 0), min(b, max_coord) + 1 + ) + + for y in range(len(line_ranges)): + res = line_ranges[y] + if not res.atomic: + return (4000000 * res[0].upper) + y + + return 0 diff --git a/challenges/2022/README.md b/challenges/2022/README.md index 2fc0b94..42d885e 100644 --- a/challenges/2022/README.md +++ b/challenges/2022/README.md @@ -28,4 +28,4 @@ Solutions to the [2022 Advent of Code](https://adventofcode.com/2022). | 12 - Hill Climbing Algorithm | ☆ ☆ | | | | 13 - Distress Signal | ☆ ☆ | | | | 14 - Regolith Reservoir | ★ ★ | [Python](14-regolithReservoir/py) | Simulating falling sand | - +| 15 - Beacon Exclusion Zone | ★ ★ | [Python](15-beaconExclusionZone/py) | Searching through a 4000000^2 size grid for a literal single empty spot | \ No newline at end of file diff --git a/challenges/2022/running-times.png b/challenges/2022/running-times.png index 22dfc7abd4836ee3a5b5485b04f0e6d56a572665..1b2dd6079d46bc9d7b886d64ee618b674226a0df 100644 GIT binary patch literal 51790 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�v09+^JxslP)jlksNyn6ML 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 JR6a!F{|_w6#Jd0h diff --git a/lib/aocpy/__init__.py b/lib/aocpy/__init__.py index 3319f81..07063d4 100644 --- a/lib/aocpy/__init__.py +++ b/lib/aocpy/__init__.py @@ -1,3 +1,4 @@ +from __future__ import annotations from typing import Any, TypeVar, Callable, Iterable @@ -26,4 +27,51 @@ def foldl(p: Callable[[U, T], U], i: Iterable[T], start: U) -> U: return res def foldr(p: Callable[[U, T], U], i: Iterable[T], start: U) -> U: - return foldl(p, reversed(i), start) \ No newline at end of file + return foldl(p, reversed(i), start) + + +class Vector: + x: int + y: int + + def __init__(self, x: int, y: int): + self.x = x + self.y = y + + @staticmethod + def _is_vector_tuple(o: Any) -> bool: + return type(o) == tuple and len(o) == 2 and type(o[0]) == int and type(o[1]) == int + + def manhattan_distance(self, o: Vector) -> int: + return abs(self.x - o.x) + abs(self.y - o.y) + + def __add__(self, o: Any) -> Vector: + if Vector._is_vector_tuple(o): + return Vector(self.x + o[0], self.y + o[1]) + elif type(o) == Vector: + return Vector(self.x + o.x, self.y + o.y) + else: + raise ValueError(f"cannot add Vector and {type(o)}") + + def __sub__(self, o: Any) -> Vector: + if Vector._is_vector_tuple(o): + return Vector(self.x - o[0], self.y - o[1]) + elif type(o) == Vector: + return Vector(self.x - o.x, self.y - o.y) + else: + raise ValueError(f"cannot subtract Vector and {type(o)}") + + def __eq__(self, o: Any) -> bool: + if Vector._is_vector_tuple(o): + return self.x == o[0] and self.y == o[1] + elif type(o) == Vector: + return self.x == o.x and self.y == o.y + else: + raise ValueError(f"cannot equate Vector and {type(o)}") + + def __repr__(self) -> str: + # return f"Vector(x={self.x}, y={self.y})" + return f"({self.x}, {self.y})" + + def __hash__(self): + return hash(f"{self.x},{self.y}")