X-Git-Url: https://git.sommitrealweird.co.uk/advent-of-code-2021.git/blobdiff_plain/906deb084f4fca89ba25da7157ed7a69fa0878d5..ff11a5a71056e4925c183d385beb270eeafbd97d:/day07/crabs2.sh diff --git a/day07/crabs2.sh b/day07/crabs2.sh new file mode 100755 index 0000000..c4e6ccd --- /dev/null +++ b/day07/crabs2.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -u + +filename="${1:-example.txt}" + +exec 3<"$filename" + +OLDIFS="$IFS" +IFS="," +read -u 3 -a crabs + +IFS=$'\n' +crabs=($(sort -n <<<"${crabs[*]}")) + +count=$((${#crabs[@]})) +total=0 +for elem in "${crabs[@]}"; do + ((total+=$elem)) +done +mean=$((total / $count)) + +fuel=0 + +# Actual best position could be mean +- 1, so loop through them to check +for (( tempmean=$((mean-1)); tempmean<=$((mean+1)); tempmean++ )); do + new_fuel=0 + for (( a=0; a<${#crabs[@]}; a++ )); do + diff=$((tempmean-${crabs[$a]})) + diff=${diff#-} + if [ $diff -gt 0 ]; then + for (( i=0; i<=$diff; i++ )); do + ((new_fuel+=$i)) + done + fi + done + if [ $fuel -eq 0 ] || [ $new_fuel -lt $fuel ]; then + fuel=$new_fuel + found_mean=$tempmean + fi +done + +echo "Found mean: $found_mean" +echo "Fuel needed: $fuel"