summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2022-12-12 11:50:34 -0500
committerJune McEnroe <june@causal.agency>2022-12-12 11:50:34 -0500
commitb14bb05c4d0b8fb97d5e644c014b25828b851a5d (patch)
treefc78d9a6e1e6a1fde01ed9e21859d5f3c64ad424
parentSolve day 12 part 1 (diff)
downloadaoc-b14bb05c4d0b8fb97d5e644c014b25828b851a5d.tar.gz
aoc-b14bb05c4d0b8fb97d5e644c014b25828b851a5d.zip
Solve day 12 part 2
-rw-r--r--2022/day12.awk36
1 files changed, 36 insertions, 0 deletions
diff --git a/2022/day12.awk b/2022/day12.awk
index 265fad6..314ce87 100644
--- a/2022/day12.awk
+++ b/2022/day12.awk
@@ -55,4 +55,40 @@ END {
 		delete N[i];
 	}
 	print N[i];
+	delete Q;
+	delete N;
+	delete V;
+	l = 1;
+	Q[l] = E;
+	N[l] = 0;
+	for (i = 1; Q[i]; ++i) {
+		split(Q[i], a, ",");
+		x = a[1];
+		y = a[2];
+		n = N[i];
+		if (m[x,y] == 1) break;
+		if (x > 1 && !V[x-1,y] && m[x-1,y] >= m[x,y]-1) {
+			V[x-1,y] = 1;
+			Q[++l] = x-1 "," y;
+			N[l] = n+1;
+		}
+		if (x < w && !V[x+1,y] && m[x+1,y] >= m[x,y]-1) {
+			V[x+1,y] = 1;
+			Q[++l] = x+1 "," y;
+			N[l] = n+1;
+		}
+		if (y > 1 && !V[x,y-1] && m[x,y-1] >= m[x,y]-1) {
+			V[x,y-1] = 1;
+			Q[++l] = x "," y-1;
+			N[l] = n+1;
+		}
+		if (y < h && !V[x,y+1] && m[x,y+1] >= m[x,y]-1) {
+			V[x,y+1] = 1;
+			Q[++l] = x "," y+1;
+			N[l] = n+1;
+		}
+		delete Q[i];
+		delete N[i];
+	}
+	print N[i];
 }