36 lines
910 B
Rust
36 lines
910 B
Rust
use std::collections::BTreeSet;
|
|
use std::fs;
|
|
use std::io::{self, BufRead};
|
|
|
|
fn main() {
|
|
let filename = "etc/p01.txt";
|
|
let file = fs::File::open(filename).expect("Can't open file");
|
|
let lines = io::BufReader::new(file).lines();
|
|
|
|
let mut set = BTreeSet::new();
|
|
let mut cur_cals: u32 = 0;
|
|
for l in lines {
|
|
match l.expect("Can't read line.").parse::<u32>() {
|
|
Ok(cals) => {
|
|
cur_cals += cals;
|
|
}
|
|
_ => {
|
|
set.insert(cur_cals);
|
|
println!(
|
|
"new cals: {}, max so far: {}",
|
|
cur_cals,
|
|
set.last().unwrap()
|
|
);
|
|
cur_cals = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if cur_cals > 0 {
|
|
set.insert(cur_cals);
|
|
}
|
|
|
|
let total: u32 = set.iter().rev().take(3).sum();
|
|
println!("calories of top 3 are: {}", total);
|
|
}
|