Compare commits

...

2 commits

Author SHA1 Message Date
Yash Karandikar 0f2b0fc80e day 4 part 2 2022-12-04 15:01:06 -06:00
Yash Karandikar 8717e1d31a Day 4 part 1 2022-12-04 14:56:44 -06:00
2 changed files with 1039 additions and 0 deletions

39
four.rs Normal file
View file

@ -0,0 +1,39 @@
fn main() {
let buf = std::fs::read_to_string("four.txt").unwrap();
let mut count_contains = 0u32;
let mut count_overlaps = 0u32;
for line in buf.lines() {
let (first, last) = line.split_once(',').unwrap();
let (first_lower, first_upper) = first
.split_once('-')
.map(|(a, b)| (a.parse::<u32>().unwrap(), b.parse::<u32>().unwrap()))
.unwrap();
let (last_lower, last_upper) = last
.split_once('-')
.map(|(a, b)| (a.parse::<u32>().unwrap(), b.parse::<u32>().unwrap()))
.unwrap();
if contains(first_lower, first_upper, last_lower, last_upper)
|| contains(last_lower, last_upper, first_lower, first_upper)
{
count_contains += 1;
}
if overlaps(first_lower, first_upper, last_lower, last_upper)
|| overlaps(last_lower, last_upper, first_lower, first_upper)
{
count_overlaps += 1;
}
}
println!("{}", count_contains);
println!("{}", count_overlaps);
}
fn contains(a: u32, b: u32, c: u32, d: u32) -> bool {
return (a..=b).contains(&c) && (a..=b).contains(&d);
}
fn overlaps(a: u32, b: u32, c: u32, d: u32) -> bool {
return (a..=b).contains(&c) || (a..=b).contains(&d);
}

1000
four.txt Normal file

File diff suppressed because it is too large Load diff