From 6796caf2bb1d7d2970140ea0c0cb1f99a7ca9bfd Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 12 Dec 2023 21:42:32 -0800 Subject: [PATCH] updates Signed-off-by: Jess Frazelle --- src/day13.rs | 77 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/src/day13.rs b/src/day13.rs index 665482b..a079d57 100644 --- a/src/day13.rs +++ b/src/day13.rs @@ -1,5 +1,4 @@ //! Day 13: Point of Incidence - use anyhow::Result; /// A terrain data point. @@ -222,8 +221,6 @@ fn is_reflection(rows: Vec, i: usize) -> bool { /// /// Find the line of reflection in each of the patterns in your notes. *What /// number do you get after summarizing all of your notes?* -/// -/// To begin, get your puzzle input (<13/input>). pub fn solve_part_1(input: &str) -> Result { // Split the input ny two new lines. let inputs = input.split("\n\n"); @@ -242,7 +239,79 @@ pub fn solve_part_1(input: &str) -> Result { Ok(total) } -/// Not yet unlocked. +/// You resume walking through the valley of mirrors and - *SMACK!* - run +/// directly into one. Hopefully nobody was watching, because that must have +/// been pretty embarrassing. +/// +/// Upon closer inspection, you discover that every mirror has exactly one +/// *smudge*: exactly one `.` or `#` should be the opposite type. +/// +/// In each pattern, you'll need to locate and fix the smudge that causes a +/// *different reflection line* to be valid. (The old reflection line won't +/// necessarily continue being valid after the smudge is fixed.) +/// +/// Here's the above example again: +/// +/// ```ignore +/// #.##..##. +/// ..#.##.#. +/// ##......# +/// ##......# +/// ..#.##.#. +/// ..##..##. +/// #.#.##.#. +/// +/// #...##..# +/// #....#..# +/// ..##..### +/// #####.##. +/// #####.##. +/// ..##..### +/// #....#..# +/// ``` +/// +/// The first pattern's smudge is in the top-left corner. If the top-left `#` +/// were instead `.`, it would have a different, horizontal line of reflection: +/// +/// ```ignore +/// 1 ..##..##. 1 +/// 2 ..#.##.#. 2 +/// 3v##......#v3 +/// 4^##......#^4 +/// 5 ..#.##.#. 5 +/// 6 ..##..##. 6 +/// 7 #.#.##.#. 7 +/// ``` +/// +/// With the smudge in the top-left corner repaired, a new horizontal line of +/// reflection between rows 3 and 4 now exists. Row 7 has no corresponding +/// reflected row and can be ignored, but every other row matches exactly: row 1 +/// matches row 6, row 2 matches row 5, and row 3 matches row 4. +/// +/// In the second pattern, the smudge can be fixed by changing the fifth symbol +/// on row 2 from `.` to `#`: +/// +/// ```ignore +/// 1v#...##..#v1 +/// 2^#...##..#^2 +/// 3 ..##..### 3 +/// 4 #####.##. 4 +/// 5 #####.##. 5 +/// 6 ..##..### 6 +/// 7 #....#..# 7 +/// ``` +/// +/// Now, the pattern has a different horizontal line of reflection between rows +/// 1 and 2. +/// +/// Summarize your notes as before, but instead use the new different reflection +/// lines. In this example, the first pattern's new horizontal line has 3 rows +/// above it and the second pattern's new horizontal line has 1 row above it, +/// summarizing to the value `*400*`. +/// +/// In each pattern, fix the smudge and find the different line of reflection. +/// *What number do you get after summarizing the new reflection line in each +/// pattern in your notes?* pub fn solve_part_2(_input: &str) -> Result { todo!() }