-
Notifications
You must be signed in to change notification settings - Fork 0
/
03_part_1.py
32 lines (25 loc) · 897 Bytes
/
03_part_1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from pathlib import Path
with (Path(__file__).parent / "data" / "03.txt").open() as fin:
path_1, path_2 = [path.split(",") for path in fin.readlines()]
direction_map = {
"L": (0, -1),
"R": (0, 1),
"U": (1, 1),
"D": (1, -1),
}
seen_positions = set()
position = [0, 0]
for instruction in path_1:
axis, offset = direction_map[instruction[0]]
for _ in range(int(instruction[1:])):
position[axis] += offset
seen_positions.add(tuple(position))
min_distance = float("inf")
position = [0, 0]
for instruction in path_2:
axis, offset = direction_map[instruction[0]]
for _ in range(int(instruction[1:])):
position[axis] += offset
if tuple(position) in seen_positions:
min_distance = min(sum(map(abs, position)), min_distance)
print(f"smallest manhattan distance between central port and an intersection: {min_distance}")