From d073dcaa66567e58d6f9a36b15c9e54b91ed8c54 Mon Sep 17 00:00:00 2001 From: Matias Linares Date: Sun, 3 Dec 2023 15:11:37 -0300 Subject: Add 2022 and 2023 --- 2023/day-01/src/bin/part1.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 2023/day-01/src/bin/part1.rs (limited to '2023/day-01/src/bin/part1.rs') diff --git a/2023/day-01/src/bin/part1.rs b/2023/day-01/src/bin/part1.rs new file mode 100644 index 0000000..3fd213d --- /dev/null +++ b/2023/day-01/src/bin/part1.rs @@ -0,0 +1,44 @@ +fn main() { + let input = include_str!("./input.txt"); + let output: u32 = input.lines().map(process_line).sum(); + println!("Result {}", output); +} + +fn process_line(s: &str) -> u32 { + let mut string = String::new(); + let iter: Vec = s.chars().filter(|c| { + c.to_digit(10).is_some() + }).map(|c| c).collect(); + assert!(iter.len() >= 1); + let chars = [iter.first(), iter.last()]; + for char in chars { + if let Some(c) = char { + string.push(*c); + } + } + string.parse::().unwrap() +} + +#[test] +fn input_1() { + let result = process_line("1abc2"); + assert_eq!(result, 12); +} + +#[test] +fn input_2() { + let result = process_line("pqr3stu8vwx"); + assert_eq!(result, 38); +} + +#[test] +fn input_3() { + let result = process_line("a1b2c3d4e5f"); + assert_eq!(result, 15); +} + +#[test] +fn input_4() { + let result = process_line("treb7uchet"); + assert_eq!(result, 77); +} -- cgit v1.2.3-70-g09d2