From 937b633d8a295f8159b8cb5547ef4351c800f805 Mon Sep 17 00:00:00 2001 From: Patrick Michl Date: Tue, 3 Dec 2024 06:52:57 +0100 Subject: [PATCH] day03 --- day03.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 day03.sh diff --git a/day03.sh b/day03.sh new file mode 100755 index 0000000..885a655 --- /dev/null +++ b/day03.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +unset PATH; readonly PATH +source ./utils/main.sh + +p1() { + local input="$1" result=0 + + while [[ -n "$input" ]]; do + if [[ "$input" =~ mul\(([0-9]{1,3}),([0-9]{1,3})\) ]]; then + result="$((result + (BASH_REMATCH[1] * BASH_REMATCH[2])))" + input="${input#*"${BASH_REMATCH[0]}"}" + else + input='' + fi + done + + printf '%d' "$result" +} + +p2() { + local input="$1" result=0 do=true + + while [[ -n "$input" ]]; do + if [[ "$input" =~ mul\(([0-9]{1,3}),([0-9]{1,3})\)|do\(\)|don\'t\(\) ]]; then + case "${BASH_REMATCH[0]}" in + do\(\)) do=true;; + don\'t\(\)) do=false;; + *) [[ "$do" == true ]] && result="$((result + (BASH_REMATCH[1] * BASH_REMATCH[2])))";; + esac + + input="${input#*"${BASH_REMATCH[0]}"}" + else + input='' + fi + done + + printf '%d' "$result" +} + +main "$@"