#[path = "../lib.rs"] mod lib; fn parse(line: String) -> Option<(u8, u8, u8, u8)> { let (a, b) = lib::split_once(&line, ',')?; let (a1, a2) = lib::split_once(a, '-')?; let (b1, b2) = lib::split_once(b, '-')?; return Some(( a1.parse::().ok()?, a2.parse::().ok()?, b1.parse::().ok()?, b2.parse::().ok()?, )); } fn part1() -> u64 { let mut count = 0; for line in lib::iter_input() { let (a1, a2, b1, b2) = parse(line).unwrap(); if (a1 <= b1 && a2 >= b2) || (b1 <= a1 && b2 >= a2) { count += 1; } } return count; } fn part2() -> u64 { let mut count = 0; for line in lib::iter_input() { let (a1, a2, b1, b2) = parse(line).unwrap(); if a1 <= b2 && a2 >= b1 { count += 1; } } return count; } fn main() { println!("part1: {}", part1()); println!("part2: {}", part2()); }