From ce4bcbe7c5b1c920eaea23d3411648e0dd3874c7 Mon Sep 17 00:00:00 2001 From: Bruno Raoult Date: Wed, 28 Jul 2021 12:25:51 +0200 Subject: [PATCH] bug fix on lists element removal. tiles are now correctly assembled. --- 2020/day20/ex2.bash | 92 ++++++++++++++++++++++++++++++++++++-------- 2020/day20/tile.bash | 21 +++++++--- 2 files changed, 93 insertions(+), 20 deletions(-) diff --git a/2020/day20/ex2.bash b/2020/day20/ex2.bash index 8b58225..5354a88 100755 --- a/2020/day20/ex2.bash +++ b/2020/day20/ex2.bash @@ -68,8 +68,10 @@ for key in "${!nums[@]}"; do RL+=("$flipleft") done - -ALL="${T[*]} ${R[*]} ${B[*]} ${L[*]} ${RT[*]} ${RR[*]} ${RB[*]} ${RL[*]}" +#echo BORDERS: +#print_all_borders +#exit 0 +ALL="${T[*]} ${R[*]} ${B[*]} ${L[*]} ${RT[*]} ${RR[*]} ${RB[*]} ${RL[*]} " ALLSIZE=${#ALL} for ((i=0; i<${#nums[@]}; ++i)); do @@ -99,27 +101,41 @@ done printf "CENTRAL[%d]=%s\n" "${#CENTRAL[@]}" "${CENTRAL[*]}" printf "EDGE[%d]=%s\n" "${#EDGE[@]}" "${EDGE[*]}" printf "CORNER[%d]=%s\n" "${#CORNER[@]}" "${CORNER[*]}" +for ((i=0; i<${#CORNER[@]}; ++i)); do + printf "corner[%d]=%d\n" "$i" "${nums[$i]}" +done + +#printf "ALL=%s\n" "$ALL" +printf "ALLSIZE=%d\n" "$ALLSIZE" printf "%s : count=%d\n" "$CMD" "$count" for ((row=0; row 0)); then - echo "border tile match: ${nums[$j]}" + echo "border tile match: idx=$index $j [${nums[$j]}]" print_tile "$j" FINAL[$row,$col]="$j" final+=("${nums[$j]}") echo "c=$c" attach_left "$right" "$j" if ((col < SQUARE-1)); then - unset "EDGE[$j]" + unset "EDGE[$index]" EDGE=("${EDGE[@]}") + printf "after removing EDGE $j\n" + printf "EDGE[%d]=%s\n" "${#EDGE[@]}" "${EDGE[*]}" else - unset "CORNER[$j]" + unset "CORNER[$index]" CORNER=("${CORNER[@]}") + printf "after removing CORNER $j\n" + printf "CORNER[%d]=%s\n" "${#CORNER[@]}" "${CORNER[*]}" fi + found=1 break fi + ((index++)) done + if ((found==0)); then + printf "NOT FOUND\n" + exit 0 + fi continue fi ################################## 1st and last col @@ -185,6 +213,7 @@ for ((row=0; row