Skip to content

Commit

Permalink
[2021-aoc19] more refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
IAjimi committed Dec 19, 2021
1 parent 3d4bfc0 commit 4b6e417
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 13 deletions.
24 changes: 11 additions & 13 deletions 2021/AOC19.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,8 @@ def parse_input(_input: list):
scanner_num = int(scanner_num.replace("---", ""))

elif "," in line:
coords = map(int, line.split(","))
x, y, z = coords
scanners[scanner_num].append((x, y, z))
coords = tuple(map(int, line.split(",")))
scanners[scanner_num].append(coords)

return scanners

Expand Down Expand Up @@ -53,7 +52,6 @@ def find_transform(coords1: list, coords2: list):
]

for perm in all_perms:
i, j, k = perm
for sign in signs:
prev_vector = None
counter = 1
Expand All @@ -69,9 +67,9 @@ def find_transform(coords1: list, coords2: list):

if counter == 12:
trans_func = lambda x: (
x[i] * sign[i] + vector[0],
x[j] * sign[j] + vector[1],
x[k] * sign[k] + vector[2],
x[perm[0]] * sign[perm[0]] + vector[0],
x[perm[1]] * sign[perm[1]] + vector[1],
x[perm[2]] * sign[perm[2]] + vector[2],
)
return trans_func, vector
return None, None
Expand Down Expand Up @@ -101,12 +99,12 @@ def find_common_beacons(d1: dict, d2: dict):
common_beacons1 = []
common_beacons2 = []

for coords1, coords1_distances in d1.items():
for coords2, coords2_distances in d2.items():
coords1_distances = set(coords1_distances)
coords2_distances = set(coords2_distances)
for coords1, c1_distances in d1.items():
for coords2, c2_distances in d2.items():
c1_distances = set(c1_distances)
c2_distances = set(c2_distances)

if len(coords1_distances.intersection(coords2_distances)) >= 11:
if len(c1_distances.intersection(c2_distances)) >= 11:
common_beacons1.append(coords1)
common_beacons2.append(coords2)

Expand Down Expand Up @@ -165,7 +163,7 @@ def translate_coordinates(
steps += 1
visited.add(node)

if node == 0 or 0 in visited:
if node == 0:
queue = []
else:
next_nodes = path[node]
Expand Down
17 changes: 17 additions & 0 deletions 2021/test_AOC19.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from AOC19 import manhattan_distance, main


def test_manhattan_distance():
coords1 = 1105, -1205, 1229
coords2 = -92, -2380, -20
assert abs(manhattan_distance(coords1, coords2)) == 3621


def test_main():
part_1_score, part_2_score = main("test_aoc19.txt")
assert part_1_score == 79
assert part_2_score == 3621

part_1_score, part_2_score = main("aoc19.txt")
assert part_1_score == 392
assert part_2_score == 13332

0 comments on commit 4b6e417

Please sign in to comment.