Total Complexity | 0 |
Total Lines | 22 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | # To match the format of input files for the Basilisk. |
||
2 | q = { 11: open("inputs/day_11_input.txt").read() } |
||
3 | |||
4 | ######################### PART 1: MULTI-LINE SOLUTION ######################### |
||
5 | galaxies = [(x, y) for y, row in enumerate(q[11].strip().split()) for x, col in enumerate(row) if col == '#'] |
||
6 | |||
7 | max_x = max(galaxies, key=lambda x: x[0])[0] |
||
8 | max_y = max(galaxies, key=lambda x: x[1])[1] |
||
9 | |||
10 | empty_rows = [y for y in range(max_y+1) if not any([y == g[1] for g in galaxies])] |
||
11 | empty_cols = [x for x in range(max_x+1) if not any([x == g[0] for g in galaxies])] |
||
12 | |||
13 | galaxies = [(g[0] + len([x for x in empty_cols if x < g[0]]), g[1] + len([y for y in empty_rows if y < g[1]])) for g in galaxies] |
||
14 | |||
15 | shortest_paths = {} |
||
16 | for g1 in galaxies: |
||
17 | for g2 in galaxies: |
||
18 | if g1 != g2 and (g2, g1) not in shortest_paths: |
||
19 | shortest_paths[(g1, g2)] = abs(g1[0] - g2[0]) + abs(g1[1] - g2[1]) |
||
20 | |||
21 | print('Day 11 Part 1:',sum(shortest_paths.values())) |
||
22 |