[py] Simplify 2022_09
This commit is contained in:
parent
d862c3ecfb
commit
322183e4df
1 changed files with 4 additions and 6 deletions
|
|
@ -3,20 +3,18 @@ def sign(n):
|
||||||
|
|
||||||
|
|
||||||
def simulate_rope(input, segments):
|
def simulate_rope(input, segments):
|
||||||
knots = [[0, 0] for _ in range(segments)]
|
knots = [(0, 0)] * segments
|
||||||
trail = {(0, 0)}
|
trail = {(0, 0)}
|
||||||
for line in input.splitlines():
|
for line in input.splitlines():
|
||||||
direction, amount = line.split()
|
direction, amount = line.split()
|
||||||
hdx, hdy = {"L": (-1, 0), "R": (1, 0), "D": (0, -1), "U": (0, 1)}[direction]
|
hdx, hdy = {"L": (-1, 0), "R": (1, 0), "D": (0, -1), "U": (0, 1)}[direction]
|
||||||
for _ in range(int(amount)):
|
for _ in range(int(amount)):
|
||||||
knots[0][0] += hdx
|
knots[0] = knots[0][0] + hdx, knots[0][1] + hdy
|
||||||
knots[0][1] += hdy
|
|
||||||
for i in range(1, len(knots)):
|
for i in range(1, len(knots)):
|
||||||
dx, dy = knots[i - 1][0] - knots[i][0], knots[i - 1][1] - knots[i][1]
|
dx, dy = knots[i - 1][0] - knots[i][0], knots[i - 1][1] - knots[i][1]
|
||||||
if abs(dx) > 1 or abs(dy) > 1:
|
if abs(dx) > 1 or abs(dy) > 1:
|
||||||
knots[i][0] += sign(dx)
|
knots[i] = knots[i][0] + sign(dx), knots[i][1] + sign(dy)
|
||||||
knots[i][1] += sign(dy)
|
trail.add(knots[-1])
|
||||||
trail.add(tuple(knots[-1]))
|
|
||||||
return len(trail)
|
return len(trail)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue