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 day1;
|
||||||
mod day2;
|
mod day2;
|
||||||
mod day3;
|
mod day3;
|
||||||
|
mod day4;
|
||||||
}
|
}
|
||||||
|
|
||||||
aoc_lib! { year = 2022 }
|
aoc_lib! { year = 2022 }
|
||||||
|
|
Loading…
Reference in a new issue