From abef4478842cb0db1012c72cbedb4c9419eaa862 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 1 Dec 2023 11:36:31 +0100 Subject: [PATCH] Day01 - part 1 --- src/day01.rs | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main.rs | 2 ++ 2 files changed, 60 insertions(+) create mode 100644 src/day01.rs diff --git a/src/day01.rs b/src/day01.rs new file mode 100644 index 0000000..861539d --- /dev/null +++ b/src/day01.rs @@ -0,0 +1,58 @@ +use std::io::Read; +use std::error::Error; +use std::fs::File; + +pub fn run() -> Result<(), Box> { + let mut f = File::open("../input/day01.txt")?; + let mut input = String::new(); + f.read_to_string(&mut input)?; + + let res = run_part1(&input)?; + println!("{res}"); + + run_part2(&input)?; + + Ok(()) +} + +fn run_part1(input: &str) -> Result> { + println!("Running day01 - part 1"); + let mut res = 0; + for l in input.lines() { + let digits: Vec = l.chars() + .filter(|c| c.is_digit(10)) + .map(|c| c.to_digit(10).unwrap()) + .collect(); + res += 10 * digits[0] + digits[digits.len() - 1]; + } + Ok(res) +} + +fn run_part2(input: &str) -> Result> { + println!("Running day01 - part 2"); + Ok(input.to_string()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn day01_part1() { + let input = "\ +1abc2 +pqr3stu8vwx +a1b2c3d4e5f +treb7uchet"; + let res = run_part1(&input); + assert_eq!(142, res.unwrap()); + } + + #[test] + fn day02_part2() { + let input = "\ +blabla"; + let res = run_part2(&input); + assert_eq!("blabla", res.unwrap()); + } +} diff --git a/src/main.rs b/src/main.rs index 080d202..80ffb11 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,6 +3,7 @@ use std::process; use std::error::Error; pub mod day00; +pub mod day01; fn main() { let args: Vec = env::args().collect(); @@ -20,6 +21,7 @@ fn main() { fn run(day: String) -> Result<(), Box> { match day.as_ref() { "day00" => day00::run()?, + "day01" => day01::run()?, _ => return Err(format!("unknown day \"{day}\"").into()), } Ok(()) -- 2.39.5