41 lines
1010 B
Rust
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(())
|
|
}
|