day 4
This commit is contained in:
parent
fc8186c119
commit
111d183782
38
src/days/day4.rs
Normal file
38
src/days/day4.rs
Normal file
|
@ -0,0 +1,38 @@
|
|||
use std::ops::Range;
|
||||
|
||||
use aoc_runner_derive::{aoc, aoc_generator};
|
||||
|
||||
#[aoc_generator(day4)]
|
||||
fn generator(s: &str) -> Vec<(Range<u32>, Range<u32>)> {
|
||||
s.lines()
|
||||
.map(|l| {
|
||||
let (a, b) = l.split_once(',').unwrap();
|
||||
let a = a.split_once('-').unwrap();
|
||||
let b = b.split_once('-').unwrap();
|
||||
(
|
||||
a.0.parse().unwrap()..a.1.parse().unwrap(),
|
||||
b.0.parse().unwrap()..b.1.parse().unwrap(),
|
||||
)
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
#[aoc(day4, part1)]
|
||||
fn part1(input: &[(Range<u32>, Range<u32>)]) -> u32 {
|
||||
input
|
||||
.iter()
|
||||
.filter(|(a, b)| {
|
||||
(a.start <= b.start && a.end >= b.end) || (a.start >= b.start && a.end <= b.end)
|
||||
})
|
||||
.count() as u32
|
||||
}
|
||||
|
||||
#[aoc(day4, part2)]
|
||||
fn part2(input: &[(Range<u32>, Range<u32>)]) -> u32 {
|
||||
input
|
||||
.iter()
|
||||
.filter(|(a, b)| {
|
||||
(a.start <= b.end && a.start >= b.start) || (b.start <= a.end && b.start >= a.start)
|
||||
})
|
||||
.count() as u32
|
||||
}
|
|
@ -4,6 +4,7 @@ mod days {
|
|||
mod day1;
|
||||
mod day2;
|
||||
mod day3;
|
||||
mod day4;
|
||||
}
|
||||
|
||||
aoc_lib! { year = 2022 }
|
||||
|
|
Loading…
Reference in a new issue