diff options
author | Matias Linares <matias@deprecated.org> | 2023-12-03 15:11:37 -0300 |
---|---|---|
committer | Matias Linares <matias@deprecated.org> | 2023-12-03 15:11:37 -0300 |
commit | d073dcaa66567e58d6f9a36b15c9e54b91ed8c54 (patch) | |
tree | b26480988df75847eba75892bdf33089ec08bcd7 /2023/day-01/src/bin/part1.rs | |
parent | 129ac460f73972097700ad2def6b4c36d6ebe6e1 (diff) | |
download | advent-of-code-d073dcaa66567e58d6f9a36b15c9e54b91ed8c54.tar.gz |
Add 2022 and 2023
Diffstat (limited to '2023/day-01/src/bin/part1.rs')
-rw-r--r-- | 2023/day-01/src/bin/part1.rs | 44 |
1 files changed, 44 insertions, 0 deletions
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<char> = 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::<u32>().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); +} |