aoc/6/1/solution.sh
2023-12-06 12:39:55 +01:00

41 lines
937 B
Bash
Executable File

#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
if [[ "${TRACE-0}" == "1" ]]; then
set -o xtrace
fi
INPUT="$1"
main ()
{
IFS=' ' read -r -a times <<< "$(grep Time ${INPUT} | awk '{$1=""; print $0}')"
IFS=' ' read -r -a distances <<< "$(grep Distance ${INPUT} | awk '{$1=""; print $0}')"
declare -a winning_counts=()
records="${#times[@]}"
for ((i=0; i<records; i++)); do
t_record="${times[${i}]}"
d_record="${distances[${i}]}"
for ((t=1; t<=t_record; t++)); do
t_remaining=$((t_record-t))
distance=$((t*t_remaining))
if [[ ${distance} -gt ${d_record} ]]; then
first_winning="${t}"
last_winning=$((t_record-first_winning))
winning=$((last_winning-first_winning+1))
break
fi
done
winning_counts+=("${winning}")
done
product=1
for i in "${winning_counts[@]}"; do
product=$((product*i))
done
echo "${product}"
}
main