2020 / day 7: final Bash cleanup
This commit is contained in:
@@ -136,10 +136,10 @@ aoc-c: res=2260
|
|||||||
|
|
||||||
+++++++++++++++++ part 1
|
+++++++++++++++++ part 1
|
||||||
aoc.bash: res=1390824
|
aoc.bash: res=1390824
|
||||||
time: 0:00.10 real, 0.07 user, 0.03 sys
|
time: 0:00.05 real, 0.03 user, 0.01 sys
|
||||||
context-switch: 8+1, page-faults: 0+312
|
context-switch: 7+1, page-faults: 0+307
|
||||||
|
|
||||||
+++++++++++++++++ part 2
|
+++++++++++++++++ part 2
|
||||||
aoc.bash: res=7490863
|
aoc.bash: res=7490863
|
||||||
time: 0:00.10 real, 0.08 user, 0.01 sys
|
time: 0:00.05 real, 0.05 user, 0.00 sys
|
||||||
context-switch: 8+1, page-faults: 0+317
|
context-switch: 9+1, page-faults: 0+308
|
||||||
|
@@ -37,18 +37,18 @@ do_cd() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
do_ls() {
|
do_ls() {
|
||||||
local info file remain
|
local remain
|
||||||
|
local -i size
|
||||||
((curline++))
|
((curline++))
|
||||||
while [[ $curline -lt ${#lines[@]} && ${lines[$curline]:0:1} != "\$" ]]; do
|
while [[ $curline -lt ${#lines[@]} && ${lines[$curline]:0:1} != "\$" ]]; do
|
||||||
read -r info file <<< "${lines[$curline]}"
|
if [[ "${lines[$curline]}" != dir* ]]; then
|
||||||
if [[ $info != dir ]]; then # file
|
size=${lines[$curline]% *}
|
||||||
remain="$curdir/$file"
|
remain="$curdir"
|
||||||
remain=${remain//+(\/)/\/}
|
|
||||||
while [[ -n $remain ]]; do # recurse up curdir and adjust sizes
|
while [[ -n $remain ]]; do # recurse up curdir and adjust sizes
|
||||||
((sizes[$remain] += info))
|
((sizes[$remain] += size))
|
||||||
remain=${remain%/*}
|
remain=${remain%/*}
|
||||||
done
|
done
|
||||||
(( sizes["/"] += info ))
|
(( sizes["/"] += size ))
|
||||||
fi
|
fi
|
||||||
((curline++))
|
((curline++))
|
||||||
done
|
done
|
||||||
|
Reference in New Issue
Block a user