diff options
Diffstat (limited to 'aoc22/day4/src/main.rs')
-rw-r--r-- | aoc22/day4/src/main.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/aoc22/day4/src/main.rs b/aoc22/day4/src/main.rs new file mode 100644 index 0000000..2dc7299 --- /dev/null +++ b/aoc22/day4/src/main.rs @@ -0,0 +1,52 @@ +#![feature(iter_next_chunk)] + +fn main() { + part1(); + part2(); +} + +fn part1() { + let input = include_str!("../input"); + + let mut ans = 0; + for line in input.lines() { + let mut split = line + .split(',') + .flat_map(|elf| elf.split('-').flat_map(|x| x.parse::<u32>())); + let b1 = split.next().unwrap(); + let e1 = split.next().unwrap(); + let b2 = split.next().unwrap(); + let e2 = split.next().unwrap(); + let s1 = b1..=e1; + let s2 = b2..=e2; + + if s1.contains(&b2) && s1.contains(&e2) || s2.contains(&b1) && s2.contains(&e1) { + ans += 1; + } + } + + println!("{}", ans); +} + +fn part2() { + let input = include_str!("../input"); + + let mut ans = 0; + for line in input.lines() { + let mut split = line + .split(',') + .flat_map(|elf| elf.split('-').flat_map(|x| x.parse::<u32>())); + let b1 = split.next().unwrap(); + let e1 = split.next().unwrap(); + let b2 = split.next().unwrap(); + let e2 = split.next().unwrap(); + let s1 = b1..=e1; + let s2 = b2..=e2; + + if s1.contains(&b2) || s1.contains(&e2) || s2.contains(&b1) || s2.contains(&e1) { + ans += 1; + } + } + + println!("{}", ans); +} |