From 8aff410ff4fe28a3dfb44634647880a6de931e1d Mon Sep 17 00:00:00 2001 From: Bruno Raoult Date: Sat, 10 Dec 2022 07:43:14 +0100 Subject: [PATCH] 2020 / day 7: final Bash cleanup --- 2022/RESULTS.txt | 8 ++++---- 2022/day07/aoc.bash | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/2022/RESULTS.txt b/2022/RESULTS.txt index bdd835c..7073e46 100644 --- a/2022/RESULTS.txt +++ b/2022/RESULTS.txt @@ -136,10 +136,10 @@ aoc-c: res=2260 +++++++++++++++++ part 1 aoc.bash: res=1390824 - time: 0:00.10 real, 0.07 user, 0.03 sys - context-switch: 8+1, page-faults: 0+312 + time: 0:00.05 real, 0.03 user, 0.01 sys + context-switch: 7+1, page-faults: 0+307 +++++++++++++++++ part 2 aoc.bash: res=7490863 - time: 0:00.10 real, 0.08 user, 0.01 sys - context-switch: 8+1, page-faults: 0+317 + time: 0:00.05 real, 0.05 user, 0.00 sys + context-switch: 9+1, page-faults: 0+308 diff --git a/2022/day07/aoc.bash b/2022/day07/aoc.bash index ba25c72..04d8f97 100755 --- a/2022/day07/aoc.bash +++ b/2022/day07/aoc.bash @@ -37,18 +37,18 @@ do_cd() { } do_ls() { - local info file remain + local remain + local -i size ((curline++)) while [[ $curline -lt ${#lines[@]} && ${lines[$curline]:0:1} != "\$" ]]; do - read -r info file <<< "${lines[$curline]}" - if [[ $info != dir ]]; then # file - remain="$curdir/$file" - remain=${remain//+(\/)/\/} + if [[ "${lines[$curline]}" != dir* ]]; then + size=${lines[$curline]% *} + remain="$curdir" while [[ -n $remain ]]; do # recurse up curdir and adjust sizes - ((sizes[$remain] += info)) + ((sizes[$remain] += size)) remain=${remain%/*} done - (( sizes["/"] += info )) + (( sizes["/"] += size )) fi ((curline++)) done