AoC2021/src/bin/day1.rs

41 lines
1010 B
Rust

use std::error::Error;
use std::fs::File;
use std::io::{self, BufRead};
use std::vec::Vec;
fn main() -> Result<(), Box<dyn Error>> {
let file = File::open("inputs/day1.txt")?;
let lines = io::BufReader::new(file).lines().map(|l| l.unwrap());
let numbers: Vec<u64> = lines.map(|l| l.parse().unwrap()).collect();
let mut last_number: Option<u64> = None;
let mut count = 0;
for num in numbers.iter() {
if let Some(last_number) = last_number {
if num > &last_number {
count += 1;
}
}
last_number = Some(*num);
}
println!("Answer Part1: {}", count);
count = 0;
last_number = None;
for window in numbers.windows(3) {
let num = window.iter().fold(0, |a, b| a + b);
if let Some(last_number) = last_number {
if num > last_number {
count += 1;
}
}
last_number = Some(num);
}
println!("Answer Part2: {}", count);
Ok(())
}