From 6a082267e441ee25de3b66f6e3e0273664d0a04b Mon Sep 17 00:00:00 2001 From: nihilazo Date: Sun, 4 Dec 2022 18:30:12 +0000 Subject: [PATCH] add day 4 (it was easy) --- src/bin/04.rs | 56 +++++++++++++++++++++++++++++++++++++++++++++ src/examples/04.txt | 6 +++++ 2 files changed, 62 insertions(+) create mode 100644 src/bin/04.rs create mode 100644 src/examples/04.txt diff --git a/src/bin/04.rs b/src/bin/04.rs new file mode 100644 index 0000000..99f9eed --- /dev/null +++ b/src/bin/04.rs @@ -0,0 +1,56 @@ +use regex::Regex; + +pub fn part_one(input: &str) -> Option { + let linere = Regex::new(r"(\d+)-(\d+),(\d+)-(\d+)").unwrap(); + let mut result = 0; + for l in input.lines() { + let caps = linere.captures(l).unwrap(); + let s1 = &caps[1].parse::().unwrap(); + let e1 = &caps[2].parse::().unwrap(); + let s2 = &caps[3].parse::().unwrap(); + let e2 = &caps[4].parse::().unwrap(); + if (s2 >= s1 && e2 <= e1) || (s1 >= s2 && e1 <= e2) { + result += 1; + } + } + Some(result) +} + +pub fn part_two(input: &str) -> Option { + let linere = Regex::new(r"(\d+)-(\d+),(\d+)-(\d+)").unwrap(); + let mut result = 0; + for l in input.lines() { + let caps = linere.captures(l).unwrap(); + let s1 = &caps[1].parse::().unwrap(); + let e1 = &caps[2].parse::().unwrap(); + let s2 = &caps[3].parse::().unwrap(); + let e2 = &caps[4].parse::().unwrap(); + if !((s2 > e1 && e2 > e1) || (s1 > e2 && e1 > e2)) { + result += 1; + } + } + Some(result) +} + +fn main() { + let input = &advent_of_code::read_file("inputs", 4); + advent_of_code::solve!(1, part_one, input); + advent_of_code::solve!(2, part_two, input); +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_part_one() { + let input = advent_of_code::read_file("examples", 4); + assert_eq!(part_one(&input), Some(2)); + } + + #[test] + fn test_part_two() { + let input = advent_of_code::read_file("examples", 4); + assert_eq!(part_two(&input), Some(4)); + } +} diff --git a/src/examples/04.txt b/src/examples/04.txt new file mode 100644 index 0000000..99a66c5 --- /dev/null +++ b/src/examples/04.txt @@ -0,0 +1,6 @@ +2-4,6-8 +2-3,4-5 +5-7,7-9 +2-8,3-7 +6-6,4-6 +2-6,4-8 \ No newline at end of file