diff --git a/07/main.rs b/07/main.rs index 13137af..02d8178 100644 --- a/07/main.rs +++ b/07/main.rs @@ -42,20 +42,17 @@ fn part_one() { if f < 100000 { sum += f } - let mut p = stack.pop().unwrap(); - p += f; - stack.push(p); + let last_on_stack = stack.len() - 1; + stack[last_on_stack] += f; } s if s.starts_with("$ cd ") => { stack.push(0); } s => { // otherwise it must be a file - let mut f = stack.pop().unwrap(); let mut sp = s.split(" "); - let size = sp.next().unwrap().parse::().unwrap(); - f += size; - stack.push(f); + let last_on_stack = stack.len() - 1; + stack[last_on_stack] += sp.next().unwrap().parse::().unwrap(); } }; } @@ -80,20 +77,17 @@ fn part_two() { if f > space_to_free && f < to_delete { to_delete = f } - let mut p = stack.pop().unwrap(); - p += f; - stack.push(p); + let last_on_stack = stack.len() - 1; + stack[last_on_stack] += f; } s if s.starts_with("$ cd ") => { stack.push(0); } s => { // otherwise it must be a file - let mut f = stack.pop().unwrap(); let mut sp = s.split(" "); - let size = sp.next().unwrap().parse::().unwrap(); - f += size; - stack.push(f); + let last_on_stack = stack.len() - 1; + stack[last_on_stack] += sp.next().unwrap().parse::().unwrap(); } }; }