Skip to content

Commit a148f18

Browse files
author
Florian Rohrer
committed
Day 12
1 parent 6ed097f commit a148f18

File tree

2 files changed

+49
-11
lines changed

2 files changed

+49
-11
lines changed

README.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@
22

33
|Exercise Description|Solution|
44
|:---|:---|
5-
|[Day 1: Calorie Counting](https://adventofcode.com/2022/day/1) |[py](/day01/main.py)|
6-
|[Day 2: Rock Paper Scissors](https://adventofcode.com/2022/day/2) |[py](/day02/main.py), [alt1](/day02/alt1.py), [alt2](/day02/alt2.py)|
7-
|[Day 3: Rucksack Reorganization](https://adventofcode.com/2022/day/3) |[py](/day03/main.py)|
8-
|[Day 4: Camp Cleanup](https://adventofcode.com/2022/day/4) |[py](/day04/main.py)|
9-
|[Day 5: Supply Stacks](https://adventofcode.com/2022/day/5) |[py](/day05/main.py)|
10-
|[Day 6: Tuning Trouble](https://adventofcode.com/2022/day/6) |[py](/day06/main.py), [alt](/day06/alt.py)|
11-
|[Day 7: No Space Left On Device](https://adventofcode.com/2022/day/7) |[py](/day07/main.py), [alt](/day07/alt.py)|
12-
|[Day 8: Treetop Tree House](https://adventofcode.com/2022/day/8) |[py](/day08/main.py)|
13-
|[Day 9: Rope Bridge](https://adventofcode.com/2022/day/9) |[py](/day09/main.py)|
14-
|[Day 10: Cathode-Ray Tube](https://adventofcode.com/2022/day/10) |[py](/day10/main.py)|
15-
|[Day 11: Monkey in the Middle](https://adventofcode.com/2022/day/11) |[py](/day11/main.py)|
5+
|[Day 1: Calorie Counting](https://adventofcode.com/2022/day/1) |[py](/day01/main.py)|
6+
|[Day 2: Rock Paper Scissors](https://adventofcode.com/2022/day/2) |[py](/day02/main.py), [alt1](/day02/alt1.py), [alt2](/day02/alt2.py)|
7+
|[Day 3: Rucksack Reorganization](https://adventofcode.com/2022/day/3) |[py](/day03/main.py)|
8+
|[Day 4: Camp Cleanup](https://adventofcode.com/2022/day/4) |[py](/day04/main.py)|
9+
|[Day 5: Supply Stacks](https://adventofcode.com/2022/day/5) |[py](/day05/main.py)|
10+
|[Day 6: Tuning Trouble](https://adventofcode.com/2022/day/6) |[py](/day06/main.py), [alt](/day06/alt.py)|
11+
|[Day 7: No Space Left On Device](https://adventofcode.com/2022/day/7) |[py](/day07/main.py), [alt](/day07/alt.py)|
12+
|[Day 8: Treetop Tree House](https://adventofcode.com/2022/day/8) |[py](/day08/main.py)|
13+
|[Day 9: Rope Bridge](https://adventofcode.com/2022/day/9) |[py](/day09/main.py)|
14+
|[Day 10: Cathode-Ray Tube](https://adventofcode.com/2022/day/10) |[py](/day10/main.py)|
15+
|[Day 11: Monkey in the Middle](https://adventofcode.com/2022/day/11) |[py](/day11/main.py)|
16+
|[Day 12: Hill Climbing Algorithm](https://adventofcode.com/2022/day/12) |[py](/day12/main.py)|
1617

1718
My solutions from previous years:
1819
* [r0f1/adventofcode2020](https://github.com/r0f1/adventofcode2020)

day12/main.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from networkx import grid_2d_graph
2+
from networkx import shortest_path
3+
4+
with open("input.txt") as f:
5+
grid = [list(x.strip()) for x in f]
6+
7+
source = None
8+
all_sources = []
9+
target = None
10+
for row_n, row in enumerate(grid):
11+
for col_n, c in enumerate(row):
12+
if c == "S":
13+
source = (row_n, col_n)
14+
grid[row_n][col_n] = "a"
15+
if c == "E":
16+
target = (row_n, col_n)
17+
grid[row_n][col_n] = "z"
18+
if grid[row_n][col_n] == "a":
19+
all_sources.append((row_n, col_n))
20+
21+
g = grid_2d_graph(len(grid), len(grid[0]))
22+
23+
grid = [[ord(c)-ord("a") for c in row] for row in grid]
24+
def weight_func(a, b, edge_dict):
25+
if grid[a[0]][a[1]] < grid[b[0]][b[1]] - 1:
26+
return None
27+
return 1
28+
29+
print(len(shortest_path(g, source, target, weight_func))-1)
30+
31+
paths = []
32+
for s in all_sources:
33+
try:
34+
paths.append(len(shortest_path(g, s, target, weight_func))-1)
35+
except:
36+
pass
37+
print(min(paths))

0 commit comments

Comments
 (0)