Working part 1

This commit is contained in:
2024-12-10 23:25:35 +08:00
parent eff5810fe3
commit e0d3bcfe9e

View File

@ -73,36 +73,40 @@ get_nine () {
COMBINATIONS+=( "$INDEX" ) COMBINATIONS+=( "$INDEX" )
fi fi
fi fi
printf "Get: %s \n" "$GET_NUM" >&2 #PRINT1=$( printf "%s " "$TRAIL" )
printf "trail: %s \n" "$TRAIL" >&2 #PRINT2=$( printf "%s " "${COMBINATIONS[@]}" )
printf "neighbors found : %s \n" "${COMBINATIONS[@]}" >&2 #printf "trail: %s, Get: %s, combinations: %s \n" "$PRINT1" "$GET_NUM" "$PRINT2" >&2
# Check if the end has been reached # Check if the end has been reached
# or no matching neighbors # or no matching neighbors
if [[ $GET_NUM -eq 9 ]] || [[ ${#COMBINATIONS[@]} -eq 0 ]] if [[ $GET_NUM -eq 9 ]] || [[ ${#COMBINATIONS[@]} -eq 0 ]]
then then
# Exit recursion # Exit recursion
printf "%s" "${#COMBINATIONS[@]}" printf "%s " "${COMBINATIONS[@]}"
#printf "%s " "${COMBINATIONS[@]}" >&2
return return
fi fi
# Recurse # Recurse
TOTAL=0
NEXT_NUM=$(( GET_NUM+=1 )) NEXT_NUM=$(( GET_NUM+=1 ))
read -r -a RESULTS <<< "$(
for INDEX in "${COMBINATIONS[@]}" for INDEX in "${COMBINATIONS[@]}"
do do
COUNT=$( RESULT=$(
get_nine \ get_nine \
"$NEXT_NUM" \ "$NEXT_NUM" \
"$( get_valid_neighbors "$INDEX" )" \ "$( get_valid_directions "$INDEX" )" \
"$INDEX" "$INDEX"
) )
(( TOTAL+=COUNT )) printf "%s " "$RESULT"
done done
printf "%s" "$TOTAL" )"
printf "%s " "${RESULTS[@]}"
#printf "%s " "${RESULTS[@]}" >&2
#printf "\n" >&2
} }
get_valid_neighbors () { get_valid_directions () {
IDX=$1 IDX=$1
NUM=1 NUM=1
@ -134,14 +138,14 @@ get_valid_neighbors () {
printf "%s" "$NUM" printf "%s" "$NUM"
} }
PATH_COUNT=0 ITER=9999
ITER=999999 TOTAL=0
for TRAILHEAD in "${TRAILHEADS[@]}" for TRAILHEAD in "${TRAILHEADS[@]}"
do do
COUNT=$( get_nine "1" "$( get_valid_neighbors "$TRAILHEAD" )" "$TRAILHEAD" ) read -r -a PEAKS <<< "$( get_nine "1" "$( get_valid_directions "$TRAILHEAD" )" "$TRAILHEAD" )"
(( PATH_COUNT+=COUNT )) COUNT=$( printf "%s " "${PEAKS[@]}" | grep -Eo '[0-9]*' | sort -u | wc -l )
(( TOTAL+=COUNT ))
(( ITER-- )) (( ITER-- ))
if [[ $ITER -eq 0 ]] ;then break; fi if [[ $ITER -eq 0 ]] ;then break; fi
done done
printf "%s\n" "$TOTAL"
printf "%s\n" "$PATH_COUNT"