---cargo --- static CONTENT: &'static str = include_str!("./inputs/05_1.txt"); fn main() { let mut ranges: Vec<_> = CONTENT.lines().map(|l| l.trim()).take_while(|l| !l.is_empty()).map(|r| { let (start, end) = r.split_once('-').unwrap(); let start = start.parse::().unwrap(); let end = end.parse::().unwrap(); start..=end }).collect(); println!("Ranges: {:?}", ranges); ranges.sort_by_key(|v| *v.start()); println!("Ranges: {:?}", ranges); let ids: Vec<_> = CONTENT.lines().map(|l| l.trim()).skip_while(|l| !l.is_empty()).skip(1).map(|v| v.parse::().unwrap()).collect(); println!("IDs: {:?}", ids); let fresh = ids.iter().filter(|id| { for r in ranges.iter() { if r.start() > id { return false; } if r.contains(id) { return true; } } false }).count(); println!("Fresh: {:?}", fresh); }