diff --git a/Cargo.lock b/Cargo.lock index 7baa389..f25a28a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,3 +5,12 @@ version = 3 [[package]] name = "aoc2021" version = "0.1.0" +dependencies = [ + "bounded-vec-deque", +] + +[[package]] +name = "bounded-vec-deque" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2225b558afc76c596898f5f1b3fc35cfce0eb1b13635cbd7d1b2a7177dc10ccd" diff --git a/Cargo.toml b/Cargo.toml index a028c28..b6ab0e5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,3 +6,4 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +bounded-vec-deque = "0.1.1" diff --git a/src/main.rs b/src/main.rs index 55dbcb5..afa12de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,20 +3,28 @@ use std::io::prelude::*; use std::env; use std::fs::File; +use bounded_vec_deque::BoundedVecDeque; + fn main() -> io::Result<()> { let args: Vec = env::args().collect(); let f = File::open(&args[1])?; let buf = io::BufReader::new(f); + let mut deque: BoundedVecDeque = BoundedVecDeque::with_capacity(3, 3); let mut last = -1; let mut count_incr = 0; for line in buf.lines() { if let Ok(l) = line { if let Ok(value) = i32::from_str_radix(&l, 10) { - if last > 0 && value > last { + deque.push_back(value); + } + if deque.is_full() { + eprintln!("{:?}", deque); + let sum = deque.iter().sum(); + if last > -1 && sum > last { count_incr += 1; } - last = value; + last = sum; } } }