pub fn f(input: Vec>) -> u64 { for x in 1..input[0].len() { let mut cnt: u32 = 0; for i in 0..input.len() { for j in 0..x { if 2 * x - 1 - j >= input[0].len() { continue; } if input[i][j] != input[i][2 * x - 1 - j] { cnt += 1; } } } if cnt == 1 { return x as u64; } } for y in 1..input.len() { let mut cnt: u32 = 0; for i in 0..y { for j in 0..input[i].len() { if 2 * y - 1 - i >= input.len() { continue; } if input[i][j] != input[2 * y - 1 - i][j] { cnt += 1; } } } if cnt == 1 { return (y * 100) as u64; } } panic!(); } pub fn main() { let txt = std::fs::read_to_string("./input/day13.txt").unwrap(); let input = txt .split("\n\n") .map(|s| { s.lines() .map(|s| s.chars().collect::>()) .collect::>() }) .collect::>(); let mut sum: u64 = 0; for i in input { sum += f(i); } println!("{}", sum); }