add bash solution for day2
This commit is contained in:
parent
6b3fcfd9cd
commit
ca600eb280
54
src/day_2.sh
Normal file
54
src/day_2.sh
Normal file
@ -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"
|
Loading…
x
Reference in New Issue
Block a user