summary refs log tree commit diff homepage
diff options
context:
space:
mode:
-rw-r--r--2022/day05.awk27
1 files changed, 27 insertions, 0 deletions
diff --git a/2022/day05.awk b/2022/day05.awk
new file mode 100644
index 0000000..599b1a4
--- /dev/null
+++ b/2022/day05.awk
@@ -0,0 +1,27 @@
+{
+	sub("^    ", "[.] ");
+	gsub("    ", " [.]");
+}
+/^\[/ {
+	for (i = 1; i <= NF; i++) {
+		x = substr($i, 2, 1);
+		if (x == ".") continue;
+		a[i] = a[i] x;
+	}
+}
+/^move/ {
+	count = $2;
+	from = $4;
+	to = $6;
+	for (i = 1; i <= count; i++) {
+		x = substr(a[from], 1, 1);
+		a[from] = substr(a[from], 2);
+		a[to] = x a[to];
+	}
+}
+END {
+	for (i = 1; a[i]; i++) {
+		printf substr(a[i], 1, 1);
+	}
+	printf "\n";
+}