From 62e9d17effa8d413f984da0a0eee07a0dcc278c4 Mon Sep 17 00:00:00 2001 From: jazzpi Date: Fri, 16 Dec 2022 10:54:48 +0100 Subject: [PATCH] Day 15, puzzle 2 --- src/bin/d15p2.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/bin/d15p2.rs diff --git a/src/bin/d15p2.rs b/src/bin/d15p2.rs new file mode 100644 index 0000000..7ded310 --- /dev/null +++ b/src/bin/d15p2.rs @@ -0,0 +1,33 @@ +use aoc22::{day15, util}; +use itertools::Itertools; + +const COORD_MAX: isize = 4000000; + +pub fn main() { + let sensors = day15::parse_sensors(&util::parse_input()); + + for row in 0..=COORD_MAX { + let covered = sensors + .iter() + .map(|s| s.covered(row)) + .filter(|r| !r.is_empty()) + .sorted_by_key(|r| *r.start()); + + let mut max_x = isize::MIN; + for range in covered { + let (min, max) = range.into_inner(); + if min == max_x + 2 { + let x = max_x + 1; + println!( + "x = {}, y = {}, tuning freq = {}", + x, + row, + x * 4000000 + row + ) + } else if max_x != isize::MIN && min > max_x + 2 { + panic!("More than one coordinate free: {}..{}", max_x + 1, min - 1); + } + max_x = max_x.max(max); + } + } +}