Mercurial > lbo > hg > aoc22
changeset 10:d110dc63f18e
day 07: finish part 1
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 09 Dec 2022 23:33:39 +0100 |
parents | a7b3529283e9 |
children | e53d5f34cf17 |
files | 07/07.jl |
diffstat | 1 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/07/07.jl Fri Dec 09 23:09:01 2022 +0100 +++ b/07/07.jl Fri Dec 09 23:33:39 2022 +0100 @@ -42,6 +42,15 @@ d.children[findnext(e -> filename(e) == s, d.children, 1)] end +function count_dirs_belowsize(root::Dir; maxsize=100000)::Int + sizes = [filesize(e) for e in root.children]; + mysize = sum(sizes; init=0); + subsizes = [count_dirs_belowsize(r) for r in root.children if isa(r, Dir)]; + (mysize <= maxsize ? mysize : 0) + sum(subsizes; init=0) +end + +# Parsing types + abstract type TerminalLine end struct Cd <: TerminalLine @@ -112,6 +121,8 @@ root end -open("07/small.txt"; read=true) do fh - println(build_filesystem(fh)) +open("07/input.txt"; read=true) do fh + root = build_filesystem(fh); + println(root); + println(count_dirs_belowsize(root)); end