Clean up handling of root node
This commit is contained in:
parent
453590c541
commit
340b207f81
32
src/day07.rs
32
src/day07.rs
@ -23,14 +23,6 @@ impl DirectoryEntry {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
fn as_dir(&self) -> Option<&String> {
|
||||
if let Self::Dir(v) = self {
|
||||
Some(v)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
@ -58,16 +50,6 @@ enum CliOperation {
|
||||
Ls(Vec<DirectoryEntry>),
|
||||
}
|
||||
|
||||
impl CliOperation {
|
||||
fn as_ls(&self) -> Option<&Vec<DirectoryEntry>> {
|
||||
if let Self::Ls(v) = self {
|
||||
Some(v)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[aoc_generator(day7)]
|
||||
fn input_generator(input: &str) -> Vec<CliOperation> {
|
||||
let mut lines = input.lines().peekable();
|
||||
@ -95,19 +77,7 @@ fn compute_dir_sizes(input: &[CliOperation]) -> Tree<(usize, usize)> {
|
||||
}
|
||||
let mut tree = Tree::new();
|
||||
let mut current_node = tree
|
||||
.insert(
|
||||
Node::new((
|
||||
input[1]
|
||||
.as_ls()
|
||||
.unwrap()
|
||||
.iter()
|
||||
.filter_map(DirectoryEntry::as_file)
|
||||
.map(|file| file.size)
|
||||
.sum::<usize>(),
|
||||
0,
|
||||
)),
|
||||
InsertBehavior::AsRoot,
|
||||
)
|
||||
.insert(Node::new((0, 0)), InsertBehavior::AsRoot)
|
||||
.unwrap();
|
||||
for op in input {
|
||||
match op {
|
||||
|
Loading…
Reference in New Issue
Block a user