From ca600eb28077983d54bf6a79e8cfc6f1aba5e01d Mon Sep 17 00:00:00 2001 From: Patrick Michl Date: Fri, 2 Dec 2022 19:55:41 +0100 Subject: [PATCH] add bash solution for day2 --- src/day_2.sh | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/day_2.sh diff --git a/src/day_2.sh b/src/day_2.sh new file mode 100644 index 0000000..ee551f4 --- /dev/null +++ b/src/day_2.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +unset PATH +BASE='.*';until [[ "$(eval "echo $BASE")" =~ \.git ]]; do BASE="../$BASE"; done;BASE="${BASE/'*'}" +source "$BASE/utils.sh" + +INPUT="$(<"$BASE/data/day_2.txt")" + +declare -A COMBINATION_TO_POINTS=( + ['A X']=3 + ['A Y']=6 + ['A Z']=0 + ['B X']=0 + ['B Y']=3 + ['B Z']=6 + ['C X']=6 + ['C Y']=0 + ['C Z']=3 +) + +declare -A SHOULD_PLAY=( + ['A X']=Z + ['A Y']=X + ['A Z']=Y + ['B X']=X + ['B Y']=Y + ['B Z']=Z + ['C X']=Y + ['C Y']=Z + ['C Z']=X +) + +declare -A SCORES=([X]=1 [Y]=2 [Z]=3) + +p1() { + mapfile -t scores <<< "$( + while read -r i; do + echo $(( COMBINATION_TO_POINTS[$i] + SCORES[${i:2}] )) + done <<< "$1" + )" + utils.sum "${scores[@]}" +} + +p2() { + mapfile -t scores <<< "$( + while read -r i; do + i="${i::1} ${SHOULD_PLAY["$i"]}" + echo $(( COMBINATION_TO_POINTS[$i] + SCORES[${i:2}] )) + done <<< "$1" + )" + utils.sum "${scores[@]}" +} + +p1 "$INPUT" +p2 "$INPUT"