Skip to content
Snippets Groups Projects
Commit 934632cc authored by Falk Rehse's avatar Falk Rehse
Browse files

Try Day-15-2

parent a063a157
No related branches found
No related tags found
No related merge requests found
const MIN_X: usize = 0;
const MAX_X: usize = 4_000_000;
const MIN_Y: usize = 0;
const MAX_Y: usize = 4_000_000;
pub fn solve_from_str(input: &str) -> usize {
let pairs = input
.split("\n")
.map(|pair| {
let mut data = pair.split(' ');
let sensor_x = data
.nth(2)
.unwrap()
.strip_prefix("x=")
.unwrap()
.strip_suffix(",")
.unwrap()
.parse()
.expect("Expected sensor x-coordinate to be a number!");
let sensor_y = data
.nth(0)
.unwrap()
.strip_prefix("y=")
.unwrap()
.strip_suffix(":")
.unwrap()
.parse()
.expect("Expected sensor y-coordinate to be a number!");
let beacon_x = data
.nth(4)
.unwrap()
.strip_prefix("x=")
.unwrap()
.strip_suffix(",")
.unwrap()
.parse()
.expect("Expected beacon x-coordinate to be a number!");
let beacon_y = data
.nth(0)
.unwrap()
.strip_prefix("y=")
.unwrap()
.parse()
.expect("Expected beacon y-coordinate to be a number!");
((sensor_x, sensor_y), (beacon_x, beacon_y))
})
.collect();
solve(&pairs)
}
pub fn solve(pairs: &Vec<((i32, i32), (i32, i32))>) -> usize {
let areas: Vec<((i32, i32), i32)> = pairs.iter().map(|pair| (pair.0, get_manhatten_distance(&pair.0, &pair.1))).collect();
let mut beacon = None;
for x in MIN_X..=MAX_X {
dbg!(x);
for y in MIN_Y..=MAX_Y {
for area in &areas {
if get_manhatten_distance(&(x as i32, y as i32), &area.0) <= area.1 {
continue;
}
}
beacon = Some((x, y));
}
}
let beacon = beacon.unwrap();
dbg!(&beacon);
beacon.0 * 4_000_000 + beacon.1
}
fn get_manhatten_distance(from: &(i32, i32), to: &(i32, i32)) -> i32 {
i32::abs(from.0 - to.0) + i32::abs(from.1 - to.1)
}
......@@ -27,13 +27,14 @@ mod day_13_2;
mod day_14_1;
mod day_14_2;
mod day_15_1;
mod day_15_2;
use std::fs;
fn main() {
let input = fs::read_to_string("input").expect("Could not read input!");
let solution = day_15_1::solve_from_str(input.as_str());
let solution = day_15_2::solve_from_str(input.as_str());
println!("Solution: {}", solution);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment