32 lines
602 B
Bash
32 lines
602 B
Bash
#!/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_1.txt")"
|
|
|
|
cals_per_elf() {
|
|
mapfile -t list <<< "$1"
|
|
local cals=() tmp=0
|
|
for i in "${list[@]}"; do
|
|
[[ "$i" == '' ]] && cals+=("$tmp") && tmp=0 && continue
|
|
((tmp+=i))
|
|
done
|
|
cals+=("$tmp")
|
|
utils.qsort "${cals[@]}"
|
|
}
|
|
|
|
p1() {
|
|
read -ra cals <<< "$(cals_per_elf "$1")"
|
|
echo "${cals[@]: -1}"
|
|
}
|
|
|
|
p2() {
|
|
read -ra cals <<< "$(cals_per_elf "$1")"
|
|
utils.sum "${cals[@]: -3}"
|
|
}
|
|
|
|
p1 "$INPUT"
|
|
p2 "$INPUT"
|
|
|