This repository has been archived on 2021-12-02. You can view files and clone it, but cannot push or open issues/pull-requests.
AdventOfCode2021/src/days/day_1.rs

59 lines
1.2 KiB
Rust

use std::fs::File;
use std::io;
use std::io::BufRead;
use std::io::BufReader;
pub fn part1() -> io::Result<u32> {
let file = File::open("input/day1")?;
let reader = BufReader::new(file);
let mut first = true;
let mut previous = 0;
let mut count = 0;
for line in reader.lines() {
let num: u32 = line?.parse().unwrap();
if !first && num > previous {
count += 1;
}
previous = num;
first = false;
}
Ok(count)
}
pub fn part2() -> io::Result<u32> {
let file = File::open("input/day1")?;
let reader = BufReader::new(file);
let mut vals: [u32; 3] = [0, 0, 0];
let mut count = 0;
for (i, line) in reader.lines().enumerate() {
let num: u32 = line?.parse().unwrap();
if i < 3 {
vals[i] = num;
} else {
// Calculate the previous sum
let sum = vals[0] + vals[1] + vals[2];
// Shift the values
vals[0] = vals[1];
vals[1] = vals[2];
vals[2] = num;
let new_sum = vals[0] + vals[1] + vals[2];
if new_sum > sum {
count += 1;
}
}
}
Ok(count)
}