2020 / day 7: final Bash cleanup
This commit is contained in:
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user