From 322183e4df8002341dc043e07bac6982c7292235 Mon Sep 17 00:00:00 2001 From: Joscha Date: Fri, 9 Dec 2022 15:21:37 +0100 Subject: [PATCH] [py] Simplify 2022_09 --- py/aoc/y2022/d09.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/py/aoc/y2022/d09.py b/py/aoc/y2022/d09.py index 68efc1c..7614611 100644 --- a/py/aoc/y2022/d09.py +++ b/py/aoc/y2022/d09.py @@ -3,20 +3,18 @@ def sign(n): def simulate_rope(input, segments): - knots = [[0, 0] for _ in range(segments)] + knots = [(0, 0)] * segments trail = {(0, 0)} for line in input.splitlines(): direction, amount = line.split() hdx, hdy = {"L": (-1, 0), "R": (1, 0), "D": (0, -1), "U": (0, 1)}[direction] for _ in range(int(amount)): - knots[0][0] += hdx - knots[0][1] += hdy + knots[0] = knots[0][0] + hdx, knots[0][1] + hdy for i in range(1, len(knots)): dx, dy = knots[i - 1][0] - knots[i][0], knots[i - 1][1] - knots[i][1] if abs(dx) > 1 or abs(dy) > 1: - knots[i][0] += sign(dx) - knots[i][1] += sign(dy) - trail.add(tuple(knots[-1])) + knots[i] = knots[i][0] + sign(dx), knots[i][1] + sign(dy) + trail.add(knots[-1]) return len(trail)