Solve year 2022 day 04
This commit is contained in:
parent
ec67927581
commit
03cbaa117f
1000
input/year2022/day04.txt
Normal file
1000
input/year2022/day04.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -15,4 +15,5 @@ pub mod year2022 {
|
||||
pub mod day01;
|
||||
pub mod day02;
|
||||
pub mod day03;
|
||||
pub mod day04;
|
||||
}
|
||||
|
@ -85,5 +85,6 @@ fn year2022() -> Vec<Solution> {
|
||||
solution!(year2022, day01),
|
||||
solution!(year2022, day02),
|
||||
solution!(year2022, day03),
|
||||
solution!(year2022, day04),
|
||||
]
|
||||
}
|
||||
|
44
src/year2022/day04.rs
Normal file
44
src/year2022/day04.rs
Normal file
@ -0,0 +1,44 @@
|
||||
use crate::util::parse::ParseExt;
|
||||
|
||||
fn solve(input: &str, filter: fn(u32, u32, u32, u32) -> bool) -> usize {
|
||||
input
|
||||
.lines()
|
||||
.filter_map(|line| {
|
||||
let mut nums = line.u32s();
|
||||
|
||||
if (filter)(nums.next()?, nums.next()?, nums.next()?, nums.next()?) {
|
||||
Some(())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.count()
|
||||
}
|
||||
|
||||
pub fn part1(input: &str) -> impl std::fmt::Display {
|
||||
solve(input, |s1, e1, s2, e2| {
|
||||
s1 <= s2 && e1 >= e2 || s1 >= s2 && e1 <= e2
|
||||
})
|
||||
}
|
||||
|
||||
pub fn part2(input: &str) -> impl std::fmt::Display {
|
||||
solve(input, |s1, e1, s2, e2| {
|
||||
s1 >= s2 && s1 <= e2 || s2 >= s1 && s2 <= e1
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_part1() {
|
||||
assert_eq!(
|
||||
"2",
|
||||
part1("2-4,6-8\n2-3,4-5\n5-7,7-9\n2-8,3-7\n6-6,4-6\n2-6,4-8").to_string()
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_part2() {
|
||||
assert_eq!(
|
||||
"4",
|
||||
part2("2-4,6-8\n2-3,4-5\n5-7,7-9\n2-8,3-7\n6-6,4-6\n2-6,4-8").to_string()
|
||||
)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user