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