Day 7 Completed.
This commit is contained in:
parent
0fce2aa521
commit
cdcbb1a367
1 changed files with 25 additions and 2 deletions
|
@ -1,5 +1,7 @@
|
|||
use std::cmp;
|
||||
use std::fs::read_to_string;
|
||||
mod system;
|
||||
use system::Directory;
|
||||
use system::Disk;
|
||||
|
||||
fn decode(cmd: Vec<&str>) -> Disk {
|
||||
|
@ -30,7 +32,7 @@ fn decode(cmd: Vec<&str>) -> Disk {
|
|||
disk
|
||||
}
|
||||
|
||||
fn list_dirs(disk: &Disk, max: u64) -> u64 {
|
||||
fn first_part(disk: &Disk, max: u64) -> u64 {
|
||||
let mut sum = 0;
|
||||
for iter in disk
|
||||
.get_directories()
|
||||
|
@ -47,9 +49,30 @@ fn list_dirs(disk: &Disk, max: u64) -> u64 {
|
|||
sum
|
||||
}
|
||||
|
||||
fn second_part(disk: &Disk, disk_space: u64, update_space: u64) {
|
||||
let directories = disk.get_directories();
|
||||
let needed_space = update_space - (disk_space - disk.get_size(directories[0]));
|
||||
println!("Needed space: {}", needed_space);
|
||||
let big_directories: Vec<&&Directory> = directories
|
||||
.iter()
|
||||
.filter(|dir| disk.get_size(dir) >= needed_space)
|
||||
.collect();
|
||||
let (_, dir) = big_directories
|
||||
.iter()
|
||||
.enumerate()
|
||||
.min_by(|(_, a), (_, b)| disk.get_size(a).cmp(&disk.get_size(b)))
|
||||
.unwrap();
|
||||
println!(
|
||||
"Directory to delete : {},\twith size: {}",
|
||||
disk.get_path(dir),
|
||||
disk.get_size(dir)
|
||||
);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let file_content = read_to_string("input").unwrap();
|
||||
let final_disk = decode(file_content.split("\n").collect());
|
||||
final_disk.print();
|
||||
println!("Total sum: {}", list_dirs(&final_disk, 100000));
|
||||
println!("Total sum: {}", first_part(&final_disk, 100000));
|
||||
second_part(&final_disk, 70000000, 30000000);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue