This commit is contained in:
Patrick Michl 2024-12-11 11:31:35 +01:00
parent 6fb5dfc060
commit 9a0a630039
No known key found for this signature in database
GPG Key ID: BFE0ACEE21CD5EB0

View File

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