use base::*; fn calc_prio(item: char) -> u32{ if item.is_lowercase() { item as u32 - ('a' as u32) + 1 } else { item as u32 - ('A' as u32) + 27 } } fn main() { let lines = read_file("day3.txt"); let sum = lines.iter() .map(|line|line.split_at(line.len() / 2)) .map(|(first_half, second_half)| { for char_0 in first_half.chars() { for char_1 in second_half.chars() { if char_0 == char_1 { return Some(char_0); } } } None }) .map(|item| { match item{ None => 0, Some(item) => calc_prio(item) } }).sum::<u32>(); println!("Task 1: {sum}"); let sum = lines.chunks_exact(3).map(|chunk| { for char_0 in chunk[0].chars() { for char_1 in chunk[1].chars() { if char_0 == char_1 { for char_2 in chunk[2].chars() { if char_1 == char_2 { return Some(char_0); } } } } } None }).map(|item|{ match item { None => 0, Some(item) => calc_prio(item) } }).sum::<u32>(); println!("Task 2: {sum}"); }