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 day01;
|
||||||
pub mod day02;
|
pub mod day02;
|
||||||
pub mod day03;
|
pub mod day03;
|
||||||
|
pub mod day04;
|
||||||
}
|
}
|
||||||
|
@ -85,5 +85,6 @@ fn year2022() -> Vec<Solution> {
|
|||||||
solution!(year2022, day01),
|
solution!(year2022, day01),
|
||||||
solution!(year2022, day02),
|
solution!(year2022, day02),
|
||||||
solution!(year2022, day03),
|
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