From e0d3bcfe9eea01c080ea42269dc1d81ab9c9d171 Mon Sep 17 00:00:00 2001 From: Clement Date: Tue, 10 Dec 2024 23:25:35 +0800 Subject: [PATCH] Working part 1 --- 2024/day-10/solution-1.sh | 50 +++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/2024/day-10/solution-1.sh b/2024/day-10/solution-1.sh index 5ec6afa..5f54755 100644 --- a/2024/day-10/solution-1.sh +++ b/2024/day-10/solution-1.sh @@ -73,36 +73,40 @@ get_nine () { COMBINATIONS+=( "$INDEX" ) fi fi - printf "Get: %s \n" "$GET_NUM" >&2 - printf "trail: %s \n" "$TRAIL" >&2 - printf "neighbors found : %s \n" "${COMBINATIONS[@]}" >&2 + #PRINT1=$( printf "%s " "$TRAIL" ) + #PRINT2=$( printf "%s " "${COMBINATIONS[@]}" ) + #printf "trail: %s, Get: %s, combinations: %s \n" "$PRINT1" "$GET_NUM" "$PRINT2" >&2 # Check if the end has been reached # or no matching neighbors if [[ $GET_NUM -eq 9 ]] || [[ ${#COMBINATIONS[@]} -eq 0 ]] then # Exit recursion - printf "%s" "${#COMBINATIONS[@]}" + printf "%s " "${COMBINATIONS[@]}" + #printf "%s " "${COMBINATIONS[@]}" >&2 return fi # Recurse - TOTAL=0 NEXT_NUM=$(( GET_NUM+=1 )) - for INDEX in "${COMBINATIONS[@]}" - do - COUNT=$( - get_nine \ - "$NEXT_NUM" \ - "$( get_valid_neighbors "$INDEX" )" \ - "$INDEX" - ) - (( TOTAL+=COUNT )) - done - printf "%s" "$TOTAL" + read -r -a RESULTS <<< "$( + for INDEX in "${COMBINATIONS[@]}" + do + RESULT=$( + get_nine \ + "$NEXT_NUM" \ + "$( get_valid_directions "$INDEX" )" \ + "$INDEX" + ) + printf "%s " "$RESULT" + done + )" + printf "%s " "${RESULTS[@]}" + #printf "%s " "${RESULTS[@]}" >&2 + #printf "\n" >&2 } -get_valid_neighbors () { +get_valid_directions () { IDX=$1 NUM=1 @@ -134,14 +138,14 @@ get_valid_neighbors () { printf "%s" "$NUM" } -PATH_COUNT=0 -ITER=999999 +ITER=9999 +TOTAL=0 for TRAILHEAD in "${TRAILHEADS[@]}" do - COUNT=$( get_nine "1" "$( get_valid_neighbors "$TRAILHEAD" )" "$TRAILHEAD" ) - (( PATH_COUNT+=COUNT )) + read -r -a PEAKS <<< "$( get_nine "1" "$( get_valid_directions "$TRAILHEAD" )" "$TRAILHEAD" )" + COUNT=$( printf "%s " "${PEAKS[@]}" | grep -Eo '[0-9]*' | sort -u | wc -l ) + (( TOTAL+=COUNT )) (( ITER-- )) if [[ $ITER -eq 0 ]] ;then break; fi done - -printf "%s\n" "$PATH_COUNT" +printf "%s\n" "$TOTAL"