diff --git a/day11.sh b/day11.sh index e74b4af..40b454c 100644 --- a/day11.sh +++ b/day11.sh @@ -6,11 +6,12 @@ source ./utils/array.sh count_after_blinks() { local blinks="$1" - local -A stones=() new_stones=() + local -A stones=() for stone in "${@:2}"; do stones["$stone"]=1; done for ((n = 0; n < blinks; n++)); do + local -A new_stones=() for stone in "${!stones[@]}"; do if ((stone == 0)); then new_stones[1]="$((${new_stones[1]:-0} + stones["$stone"]))" @@ -24,14 +25,11 @@ count_after_blinks() { else new_stones["$((stone * 2024))"]="$((${new_stones["$((stone * 2024))"]:-0} + stones["$stone"]))" fi - stones["$stone"]=0 done - local old new - old="$(declare -p stones)" - new="$(declare -p new_stones)" - eval "${old/stones/new_stones}" - eval "${new/new_stones/stones}" + local tmp + tmp="$(declare -p new_stones)" + eval "${tmp/new_stones/stones}" done array.sum stones