aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2025-12-07 08:27:36 +0100
committerThomas Voss <mail@thomasvoss.com> 2025-12-07 08:27:36 +0100
commit4c7b413ed9082d51b2af7f1c3cb2251ee2b1a338 (patch)
treef09827f4e885126994120f276ab0cfd5b5552311
parentde96af0762cf5abae09788434f407e7fc86d1b24 (diff)
Add 2025 day 6 solutions
-rwxr-xr-x2025/06/puzzle-1.awk20
-rwxr-xr-x2025/06/puzzle-2.sh27
2 files changed, 47 insertions, 0 deletions
diff --git a/2025/06/puzzle-1.awk b/2025/06/puzzle-1.awk
new file mode 100755
index 0000000..4bb4338
--- /dev/null
+++ b/2025/06/puzzle-1.awk
@@ -0,0 +1,20 @@
+#!/usr/bin/awk -f
+
+NR == 1 {
+ for (i = 1; i <= NF; i++)
+ xs[i, 2] = 1
+}
+
+!/[+*]/ {
+ for (i = 1; i <= NF; i++) {
+ xs[i, 1] += $i
+ xs[i, 2] *= $i
+ }
+}
+
+/[+*]/ {
+ for (i = 1; i <= NF; i++)
+ total += xs[i, $i == "+" ? 1 : 2]
+}
+
+END { print total }
diff --git a/2025/06/puzzle-2.sh b/2025/06/puzzle-2.sh
new file mode 100755
index 0000000..cba270f
--- /dev/null
+++ b/2025/06/puzzle-2.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+{
+ printf '('
+ for i in $(seq "$(head -n1 input | wc -c)")
+ do
+ num="$(cut -c $i input | paste -sd '')"
+ num="${num%${num##*[![:space:]]}}"
+
+ case "$num" in
+ *[+*])
+ test -n "$op" && printf ') + ('
+ op="${num#${num%?}}"
+ num="${num%?}"
+ printf '%d %s ' $num "$op"
+ ;;
+ '')
+ test "$op" = +
+ printf '%d' $?
+ ;;
+ *)
+ printf '%d %s ' $num "$op"
+ ;;
+ esac
+ done
+ printf ')\n'
+} | bc