diff options
Diffstat (limited to 'day-0')
-rw-r--r-- | day-0/.gitkeep | 0 | ||||
-rwxr-xr-x | day-0/sol.sh | 40 |
2 files changed, 40 insertions, 0 deletions
diff --git a/day-0/.gitkeep b/day-0/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/day-0/.gitkeep diff --git a/day-0/sol.sh b/day-0/sol.sh new file mode 100755 index 0000000..441efb2 --- /dev/null +++ b/day-0/sol.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# USAGE: ./sol.sh (n: top elves) + +NUM_ELVES=${1:-3} + +declare -a ELVES=() +for (( i = 0; i<$NUM_ELVES; i++)) +do + ELVES+=(0) +done + + +add_to_elves () { + local max=$1 + for (( i = 0; i<${NUM_ELVES}; i++)); + do + local tmp="${ELVES[$i]}"; + if [[ $max -ge $tmp ]]; + then + ELVES[$i]=$max + max=$tmp + fi + done +} + +CURRENT_ELF=0 +while read -r line +do + if [[ -z "$line" ]]; + then + add_to_elves $CURRENT_ELF + CURRENT_ELF=0 + else + CURRENT_ELF=$((CURRENT_ELF+line)) + fi +done < input + +echo "MAX ELF = ${ELVES[0]}" +echo "sum(TOP $NUM_ELVES ELVES) = $(printf "%s\n" $(echo "${ELVES[*]}") | paste -sd+ - | bc)" |