From 9e0d86d9964be677f1cbc37779fe2aa9ca4974f8 Mon Sep 17 00:00:00 2001 From: Clement Date: Mon, 9 Dec 2024 00:36:51 +0800 Subject: [PATCH] Working part 1 build --- 2024/day-8/solution-1.sh | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/2024/day-8/solution-1.sh b/2024/day-8/solution-1.sh index ec4337e..87c1ef8 100644 --- a/2024/day-8/solution-1.sh +++ b/2024/day-8/solution-1.sh @@ -19,7 +19,7 @@ do fi done )" - printf "%s\n" "$LINE" >&2 + #printf "%s\n" "$LINE" >&2 read -r -a IDX_ARRAY <<< "$LINE" #printf "idx: %s " "${IDX_ARRAY[@]}" >&2 #printf "\n" >&2 @@ -32,17 +32,27 @@ do do B=${IDX_ARRAY[j]} DIFF=$(( B - A )) + VDIFF=$(( (B / LEN) - (A / LEN) )) HEAD=$(( A - DIFF )) TAIL=$(( B + DIFF )) - printf "char: %s, i: %s, j: %s, DIFF: %s, HEAD: %s, TAIL: %s\n" "$CHAR" "$A" "$B" "$DIFF" "$HEAD" "$TAIL" >&2 - for VALUE in $HEAD $TAIL - do - if [[ $VALUE -gt ${#MAP_ARRAY[@]} ]] || [[ $VALUE -lt 0 ]] - then - continue - fi - SHADOW_ARRAY[VALUE]=X # Mark on shadow map - done + HEADVDIFF=$(( (A / LEN) - (HEAD / LEN) )) + TAILVDIFF=$(( (TAIL / LEN) - (B / LEN) )) + printf "char: %s, A: %s, B: %s, DIFF: %s, VDIFF: %s, HEAD: %s, HEADVDIFF: %s, TAIL: %s, TAILVDIFF: %s\n" "$CHAR" "$A" "$B" "$DIFF" "$VDIFF" "$HEAD" "$HEADVDIFF" "$TAIL" "$TAILVDIFF" >&2 + # Check if out of bounds + if [[ $HEAD -lt ${#MAP_ARRAY[@]} ]] && \ + [[ $HEAD -ge 0 ]] && \ + [[ $HEADVDIFF -eq $VDIFF ]] + then + SHADOW_ARRAY[HEAD]=X # Mark on shadow map + echo $VALUE >> values + fi + if [[ $TAIL -lt ${#MAP_ARRAY[@]} ]] && \ + [[ $TAIL -ge 0 ]] && \ + [[ $TAILVDIFF -eq $VDIFF ]] + then + SHADOW_ARRAY[TAIL]=X # Mark on shadow map + echo $VALUE >> values + fi done done unset IDX_ARRAY