[rs] Simplify 2022_04
This commit is contained in:
parent
7b89c13503
commit
70ff2ab3a7
1 changed files with 8 additions and 13 deletions
|
|
@ -1,31 +1,26 @@
|
||||||
use std::ops::RangeInclusive;
|
|
||||||
|
|
||||||
fn contains(a: &RangeInclusive<u32>, b: &RangeInclusive<u32>) -> bool {
|
|
||||||
a.start() <= b.start() && b.end() <= a.end()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn overlap(a: &RangeInclusive<u32>, b: &RangeInclusive<u32>) -> bool {
|
|
||||||
a.contains(b.start()) || a.contains(b.end()) || b.contains(a.start()) || b.contains(a.end())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn solve(input: String) {
|
pub fn solve(input: String) {
|
||||||
let pairs = input
|
let pairs = input
|
||||||
.lines()
|
.lines()
|
||||||
.map(|l| {
|
.map(|l| {
|
||||||
let mut ranges = l.split(',').map(|p| {
|
let mut ranges = l.split(',').map(|p| {
|
||||||
let mut numbers = p.split('-').map(|n| n.parse::<u32>().unwrap());
|
let mut numbers = p.split('-').map(|n| n.parse::<u32>().unwrap());
|
||||||
numbers.next().unwrap()..=numbers.next().unwrap()
|
(numbers.next().unwrap(), numbers.next().unwrap())
|
||||||
});
|
});
|
||||||
(ranges.next().unwrap(), ranges.next().unwrap())
|
(ranges.next().unwrap(), ranges.next().unwrap())
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
// Part 1
|
||||||
let score = pairs
|
let score = pairs
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|(a, b)| contains(a, b) || contains(b, a))
|
.filter(|((s1, e1), (s2, e2))| (s1 <= s2 && e2 <= e1) || (s2 <= s1 && e1 <= e2))
|
||||||
.count();
|
.count();
|
||||||
println!("Part 1: {score}");
|
println!("Part 1: {score}");
|
||||||
|
|
||||||
let score = pairs.iter().filter(|(a, b)| overlap(a, b)).count();
|
// Part 2
|
||||||
|
let score = pairs
|
||||||
|
.iter()
|
||||||
|
.filter(|((s1, e1), (s2, e2))| s1 <= e2 && s2 <= e1)
|
||||||
|
.count();
|
||||||
println!("Part 2: {score}");
|
println!("Part 2: {score}");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue