Skip to content

Commit 9e21597

Browse files
committed
solved day 9 part 1
1 parent eedb8d1 commit 9e21597

4 files changed

Lines changed: 61 additions & 0 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
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
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
= 4767418746

src/y2025/day9.rs

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
use advent_of_code_data as aoc;
2+
use ube::{spatial::Point2, utils::pairwise_combinations};
3+
use yuletide as yt;
4+
5+
use linkme::distributed_slice;
6+
7+
use crate::SOLVERS;
8+
9+
#[distributed_slice(SOLVERS)]
10+
static SOLVER: yt::SolverAutoRegister = yt::SolverAutoRegister {
11+
modpath: std::module_path!(),
12+
part_one: yt::SolverPart {
13+
func: day_9_1,
14+
examples: &[yt::Example {
15+
input: "7,1\n11,1\n11,7\n9,7\n9,5\n2,5\n2,3\n7,3",
16+
expected: aoc::Answer::Int(50),
17+
}],
18+
},
19+
part_two: yt::SolverPart {
20+
func: day_9_2,
21+
examples: &[/*yt::Example {
22+
input: "",
23+
expected: aoc::Answer::Int(0),
24+
}*/],
25+
},
26+
};
27+
28+
fn parse_tile_locations(input: &str) -> Vec<Point2> {
29+
input
30+
.lines()
31+
.map(|line| {
32+
let (x_str, y_str) = line.split_once(",").unwrap();
33+
Point2 {
34+
x: x_str.parse().unwrap(),
35+
y: y_str.parse().unwrap(),
36+
}
37+
})
38+
.collect::<Vec<_>>()
39+
}
40+
41+
fn find_largest_rectangle(points: Vec<Point2>) -> usize {
42+
pairwise_combinations(&points)
43+
.map(|(a, b)| {
44+
let w = (b.x - a.x).abs() + 1;
45+
let h = (b.y - a.y).abs() + 1;
46+
(w * h) as usize
47+
})
48+
.max()
49+
.unwrap()
50+
}
51+
52+
pub fn day_9_1(args: &yt::SolverArgs) -> yt::Result<aoc::Answer> {
53+
Ok(find_largest_rectangle(parse_tile_locations(args.input)).into())
54+
}
55+
56+
pub fn day_9_2(_args: &yt::SolverArgs) -> yt::Result<aoc::Answer> {
57+
Err(yt::SolverError::NotFinished)
58+
}

src/y2025/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ mod day4;
55
mod day5;
66
mod day6;
77
mod day7;
8+
mod day9;

0 commit comments

Comments
 (0)