From 00000280ae944fddbd9e4eeae490b32e74cab22d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Jane=C5=BEi=C4=8D?= Date: Wed, 13 Dec 2023 23:15:21 +0100 Subject: [PATCH] solution: day 13 clean --- src/bin/13.rs | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/src/bin/13.rs b/src/bin/13.rs index 71b8c18..cf9c325 100644 --- a/src/bin/13.rs +++ b/src/bin/13.rs @@ -1,23 +1,22 @@ -fn mirror_h(shape: &Vec>, smudges: usize) -> Option { - (1..shape.len()) - .filter(|&i| { - shape - .iter() - .skip(i) - .zip(shape.iter().take(i).rev()) - .map(|(x, y)| { - x.iter() - .zip(y.iter()) - .map(|(xx, yy)| (xx != yy) as usize) - .sum::() - }) - .sum::() - == smudges - }) - .max() +fn mirror_h(shape: &[Vec], smudges: usize) -> Option { + (1..shape.len()).find(|&i| { + shape + .iter() + .skip(i) + .zip(shape.iter().take(i).rev()) + .map(|(x, y)| { + x.iter() + .zip(y.iter()) + .map(|(xx, yy)| (xx != yy) as usize) + .sum::() + }) + .sum::() + == smudges + }) } -fn mirror_v(shape: &Vec>, smudges: usize) -> Option { - let shape = (0..shape[0].len()) + +fn mirror_v(shape: &[Vec], smudges: usize) -> Option { + let shape: Vec> = (0..shape[0].len()) .map(|col| (0..shape.len()).map(|row| shape[row][col]).collect()) .collect(); @@ -28,10 +27,9 @@ fn solve(input: &str, smudges: usize) -> usize { input .split("\n\n") .map(|x| x.lines().map(|line| line.chars().collect()).collect()) - .map(|shape| { - let v = mirror_v(&shape, smudges).unwrap_or_default(); - let h = mirror_h(&shape, smudges).unwrap_or_default(); - v + h * 100 + .map(|shape: Vec>| { + mirror_v(&shape, smudges).unwrap_or_default() + + mirror_h(&shape, smudges).unwrap_or_default() * 100 }) .sum() }