From 6b89133a79e798edadca7eb59800441535e97670 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Wed, 2 Jul 2025 14:45:11 +0200 Subject: Day 15 2022 --- 2022/15/a.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 2022/15/a.rs (limited to '2022/15/a.rs') diff --git a/2022/15/a.rs b/2022/15/a.rs new file mode 100644 index 0000000..7b87150 --- /dev/null +++ b/2022/15/a.rs @@ -0,0 +1,30 @@ +use std::cmp::max; +use std::collections::HashSet; +mod common; +use common::*; + +fn main() { + const Y: i64 = 2000000; + let sensors = read_sensors_from_stdin(); + let mut ranges = sensors.iter() + .map(|s| s.get_range(Y)) + .filter(|r| r.left <= r.right) + .collect::>(); + ranges.sort(); + let mut current = Range { left: i64::MIN, right: i64::MIN }; + let mut sum = 0; + for r in ranges { + current = Range { + left: max(current.right+1, r.left), + right: max(current.right, r.right) + }; + sum += (current.right - current.left + 1) as usize; + } + sum -= sensors.iter() + .map(|s| s.b) + .collect::>() // Remove duplicates + .iter() + .filter(|b| b.y == Y) + .count(); + println!("{sum}"); +} -- cgit v1.3