day11
This commit is contained in:
parent
6fb5dfc060
commit
9a0a630039
12
day11.sh
12
day11.sh
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user