#![feature(iter_next_chunk)] fn main() { part1(); part2(); } fn part1() { let input = include_str!("../input"); let mut ans = 0; for line in input.lines() { let mut split = line .split(',') .flat_map(|elf| elf.split('-').flat_map(|x| x.parse::())); let b1 = split.next().unwrap(); let e1 = split.next().unwrap(); let b2 = split.next().unwrap(); let e2 = split.next().unwrap(); let s1 = b1..=e1; let s2 = b2..=e2; if s1.contains(&b2) && s1.contains(&e2) || s2.contains(&b1) && s2.contains(&e1) { ans += 1; } } println!("{}", ans); } fn part2() { let input = include_str!("../input"); let mut ans = 0; for line in input.lines() { let mut split = line .split(',') .flat_map(|elf| elf.split('-').flat_map(|x| x.parse::())); let b1 = split.next().unwrap(); let e1 = split.next().unwrap(); let b2 = split.next().unwrap(); let e2 = split.next().unwrap(); let s1 = b1..=e1; let s2 = b2..=e2; if s1.contains(&b2) || s1.contains(&e2) || s2.contains(&b1) || s2.contains(&e1) { ans += 1; } } println!("{}", ans); }