aoc-2023/02.sh

30 lines
751 B
Bash

#!/bin/sh
gamesum=0 powersum=0
while IFS=: read -r game line; do
rmax=0 gmax=0 bmax=0 fail=""
game=${game##* }
IFS=";"
set -- $line
IFS=" ,"
for roll; do
last=""
while [ -z "$last" ]; do
roll=${roll#* }
[ "${roll%%,*}" = "$roll" ] && last=1
case ${roll%%,*} in
*red) [ "${roll%% *}" -gt 12 ] && fail=1; [ "${roll%% *}" -gt $rmax ] && rmax=${roll%% *} ;;
*green) [ "${roll%% *}" -gt 13 ] && fail=1; [ "${roll%% *}" -gt $gmax ] && gmax=${roll%% *} ;;
*blue) [ "${roll%% *}" -gt 14 ] && fail=1; [ "${roll%% *}" -gt $bmax ] && bmax=${roll%% *} ;;
esac
roll=${roll#*,}
done
done
[ -z "$fail" ] && gamesum=$((gamesum + game))
powersum=$((powersum + (rmax * gmax * bmax)))
done
echo 1: $gamesum
echo 2: $powersum